<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _save_tfi(self, tfi, asset=False):
 """Save currently open scene with the information in the given taskfile info :param tfi: taskfile info :type tfi: :class:`TaskFileInfo` :returns: None :rtype: None :raises: None """

        jbfile = JB_File(tfi)
        self.create_dir(jbfile)

        tf, note = self.create_db_entry(tfi)

        try:
            js = JukeboxSignals.get()
            if asset:
                js.before_save_asset.emit(jbfile, tf)
                self.save_asset(jbfile, tf)
                js.after_save_asset.emit(jbfile, tf)
            else:
                js.before_save_shot.emit(jbfile, tf)
                self.save_shot(jbfile, tf)
                js.after_save_shot.emit(jbfile, tf)
        except:
            tf.delete()
            note.delete()
            self.statusbar.showMessage('Saving failed!')
            log.exception("Saving failed!")
            return
        self.browser.update_model(tfi)