![](/img/trans.png)
[英]How to change the default Python interpreter in Sublime text 3
[英]How to catch Sublime Text exceptions on their Python interpreter?
這已遷移到https://github.com/SublimeTextIssues/Core/issues/1359
我正在嘗試捕獲此異常:
try:
print( 'RUNNING' )
sublime.active_window().run_command( "side_bar_update_sync" )
isNotSyncedSideBarEnabled = False
print( 'RUNNING THIS' )
except BaseException:
isNotSyncedSideBarEnabled = True
print( 'RUNNING THIS ALSO' )
但是,當它運行時,它只是無法捕獲它。 可以在TypeError
, Exception
或BaseException
類中嘗試使用它。 以下是完整的異常輸出。
reloading plugin SublimeDefaultSyntax.default_syntax
READ_PREF_ASYNC!!!!
updateIsSyncedSideBarEnabled!!!!
RUNNING
Traceback (most recent call last):
File "D:\User\Dropbox\Applications\SoftwareVersioning\SublimeText\sublime_plugin.py", line 538, in run_
return self.run()
TypeError: run() missing 1 required positional argument: 'enable'
RUNNING THIS
isNotSyncedSideBarEnabled: False
問題是,python無法捕獲run_command( "side_bar_update_sync" )
的異常。 捕獲錯誤的異常(如嘗試調用self.view
時)沒有任何自我傳遞時,可以正常工作。 這是完整的代碼:
def plugin_loaded():
global isNotSyncedSideBarEnabled
packageControlSettings = sublime.load_settings('Package Control.sublime-settings')
userSettings = sublime.load_settings('Preferences.sublime-settings')
def updateIsSyncedSideBarEnabled():
global isNotSyncedSideBarEnabled
print(' updateIsSyncedSideBarEnabled!!!!')
sublime.active_window().run_command( "reveal_in_side_bar" )
try:
print( 'RUNNING' )
sublime.active_window().run_command( "side_bar_update_sync" )
isNotSyncedSideBarEnabled = False
print( 'RUNNING THIS' )
except BaseException:
isNotSyncedSideBarEnabled = True
print( 'RUNNING THIS ALSO' )
print( 'isNotSyncedSideBarEnabled: ' + str( isNotSyncedSideBarEnabled ) )
def read_pref_async():
print('READ_PREF_ASYNC!!!!')
updateIsSyncedSideBarEnabled()
def read_pref_package():
print('READ_PREF_PACKAGE!!!!')
updateIsSyncedSideBarEnabled()
def read_pref_preferences():
print('READ_PREF_PREFERENCES!!!!')
updateIsSyncedSideBarEnabled()
# read initial setting, after all packages being loaded
sublime.set_timeout_async( read_pref_async, 1000 )
# listen for changes
packageControlSettings.add_on_change( "Package Control", read_pref_package )
userSettings.add_on_change( "Preferences", read_pref_preferences )
#print( userSettings.get( "ignored_packages" ) )
#print( packageControlSettings.get( "installed_packages" ) )
在此討論之后,此Sublime Text論壇的主題可能會如下: https : //forum.sublimetext.com/t/how-to-add-remove-a-default-menu-entry-when-ax-package-is-isnt- enabled-installed / 22753?u = addons_zz
這是該文件上異常顯示的行:
532 class ApplicationCommand(Command):
533 def run_(self, edit_token, args):
534 args = self.filter_args(args)
535 if args:
536 return self.run(**args)
537 else:
538 return self.run()
539
540 def run(self):
541 pass1
542
543 ... other classes
如問題所述,這確實是Sublime Text上的錯誤。 這是錯誤報告中的一個較小的副本:
import sublime_plugin
class TestCommandCommand(sublime_plugin.TextCommand):
def run(self, edit):
try:
ret = self.view.window().run_command("toggle_comment", {"comment": "no"})
except:
print("an exception")
else:
print(ret)
安慰:
reloading plugin User.test
command: test_command
Traceback (most recent call last):
File "C:\Program Files\Sublime Text 3\sublime_plugin.py", line 792, in run_
return self.run(edit, **args)
TypeError: run() got an unexpected keyword argument 'comment'
None
不用說,這僅在Python命令而不是內部命令中發生,因為這些命令根本不會出錯。 另外,當您嘗試以sublime.active_window().run_command( "reveal_in_side_bar" )
運行命令sublime.active_window().run_command( "reveal_in_side_bar" )
該命令不存在時,Sublime Text不會引發異常。 這是為了使插件或菜單項在不可用時不會引發錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.