From 53e6803977ef45bd380479703d4217c7d1e496a7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 30 Jul 2023 16:14:13 +1000 Subject: [PATCH] Cleanup: check for "BaseException" instead of "Exception" Prefer the more generic exception type as it's possible exceptions derive from this and not "Exception". Also use the name 'ex' for exceptions instead of 'e'. --- scripts/modules/addon_utils.py | 10 ++++---- scripts/modules/bl_app_template_utils.py | 6 ++--- .../autocomplete/complete_calltip.py | 2 +- .../autocomplete/complete_namespace.py | 6 ++--- .../bl_i18n_utils/bl_extract_messages.py | 8 +++---- scripts/modules/bl_i18n_utils/utils.py | 4 ++-- scripts/modules/bl_keymap_utils/io.py | 2 +- .../bl_previews_utils/bl_previews_render.py | 24 +++++++++---------- scripts/modules/rna_keymap_ui.py | 2 +- scripts/modules/rna_xml.py | 2 +- scripts/modules/sys_info.py | 8 +++---- scripts/startup/bl_operators/image.py | 8 +++---- scripts/startup/bl_operators/node.py | 8 +++---- scripts/startup/bl_operators/presets.py | 6 ++--- .../bl_operators/screen_play_rendered_anim.py | 4 ++-- scripts/startup/bl_operators/sequencer.py | 2 +- scripts/startup/bl_operators/text.py | 4 ++-- scripts/startup/bl_operators/userpref.py | 2 +- scripts/startup/bl_operators/wm.py | 14 +++++------ .../startup/bl_ui/space_toolsystem_common.py | 2 +- 20 files changed, 62 insertions(+), 62 deletions(-) diff --git a/scripts/modules/addon_utils.py b/scripts/modules/addon_utils.py index c7ab6e016be..68dcbc851ac 100644 --- a/scripts/modules/addon_utils.py +++ b/scripts/modules/addon_utils.py @@ -309,7 +309,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non # in most cases the caller should 'check()' first. try: mod.unregister() - except Exception as ex: + except BaseException as ex: print( "Exception in module unregister():", repr(getattr(mod, "__file__", module_name)), @@ -325,7 +325,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non try: importlib.reload(mod) - except Exception as ex: + except BaseException as ex: handle_error(ex) del sys.modules[module_name] return None @@ -354,7 +354,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non raise ImportError(name=module_name) mod.__time__ = os.path.getmtime(mod.__file__) mod.__addon_enabled__ = False - except Exception as ex: + except BaseException as ex: # if the addon doesn't exist, don't print full traceback if type(ex) is ImportError and ex.name == module_name: print("addon not loaded:", repr(module_name)) @@ -384,7 +384,7 @@ def enable(module_name, *, default_set=False, persistent=False, handle_error=Non # 3) Try run the modules register function. try: mod.register() - except Exception as ex: + except BaseException as ex: print( "Exception in module register():", getattr(mod, "__file__", module_name), @@ -436,7 +436,7 @@ def disable(module_name, *, default_set=False, handle_error=None): try: mod.unregister() - except Exception as ex: + except BaseException as ex: mod_path = getattr(mod, "__file__", module_name) print("Exception in module unregister():", repr(mod_path)) del mod_path diff --git a/scripts/modules/bl_app_template_utils.py b/scripts/modules/bl_app_template_utils.py index d8a98aa768f..6de8d8f31a7 100644 --- a/scripts/modules/bl_app_template_utils.py +++ b/scripts/modules/bl_app_template_utils.py @@ -52,7 +52,7 @@ def _enable(template_id, *, handle_error=None, ignore_not_found=False): # 1) try import try: mod = import_from_id(template_id, ignore_not_found=ignore_not_found) - except Exception as ex: + except BaseException as ex: handle_error(ex) return None @@ -64,7 +64,7 @@ def _enable(template_id, *, handle_error=None, ignore_not_found=False): # 2) try run the modules register function try: mod.register() - except Exception as ex: + except BaseException as ex: print("Exception in module register(): %r" % getattr(mod, "__file__", template_id)) handle_error(ex) @@ -106,7 +106,7 @@ def _disable(template_id, *, handle_error=None): try: mod.unregister() - except Exception as ex: + except BaseException as ex: print("Exception in module unregister(): %r" % getattr(mod, "__file__", template_id)) handle_error(ex) diff --git a/scripts/modules/bl_console_utils/autocomplete/complete_calltip.py b/scripts/modules/bl_console_utils/autocomplete/complete_calltip.py index 211f4f82311..31434272d98 100644 --- a/scripts/modules/bl_console_utils/autocomplete/complete_calltip.py +++ b/scripts/modules/bl_console_utils/autocomplete/complete_calltip.py @@ -158,7 +158,7 @@ def complete(line, cursor, namespace): func_word = match.group(2) try: func = eval(func_word, namespace) - except Exception: + except BaseException: func = None if func: diff --git a/scripts/modules/bl_console_utils/autocomplete/complete_namespace.py b/scripts/modules/bl_console_utils/autocomplete/complete_namespace.py index 48bccdf4ad6..2310a512aba 100644 --- a/scripts/modules/bl_console_utils/autocomplete/complete_namespace.py +++ b/scripts/modules/bl_console_utils/autocomplete/complete_namespace.py @@ -75,7 +75,7 @@ def complete_indices(word, namespace, *, obj=None, base=None): if obj is None: try: obj = eval(base, namespace) - except Exception: + except BaseException: return [] if not hasattr(obj, '__getitem__'): # obj is not a list or dictionary @@ -148,7 +148,7 @@ def complete(word, namespace, *, private=True): try: # do not run the obj expression in the console namespace[TEMP] = eval(obj, namespace) - except Exception: + except BaseException: return [] matches = complete_names(TEMP + '.' + attr, namespace) matches = [obj + match[TEMP_N:] for match in matches] @@ -167,7 +167,7 @@ def complete(word, namespace, *, private=True): # try to retrieve the object try: obj = eval(word, namespace) - except Exception: + except BaseException: return [] # ignore basic types if type(obj) in {bool, float, int, str}: diff --git a/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/scripts/modules/bl_i18n_utils/bl_extract_messages.py index fe4775666b1..7de210cc55c 100644 --- a/scripts/modules/bl_i18n_utils/bl_extract_messages.py +++ b/scripts/modules/bl_i18n_utils/bl_extract_messages.py @@ -28,8 +28,8 @@ def init_spell_check(settings, lang="en_US"): try: from bl_i18n_utils import utils_spell_check return utils_spell_check.SpellChecker(settings, lang) - except Exception as e: - print("Failed to import utils_spell_check ({})".format(str(e))) + except BaseException as ex: + print("Failed to import utils_spell_check ({})".format(str(ex))) return None @@ -560,9 +560,9 @@ def dump_py_messages_from_files(msgs, reports, files, settings): op = getattr(op, n) try: return op.get_rna_type().translation_context - except Exception as e: + except BaseException as ex: default_op_context = i18n_contexts.operator_default - print("ERROR: ", str(e)) + print("ERROR: ", str(ex)) print(" Assuming default operator context '{}'".format(default_op_context)) return default_op_context diff --git a/scripts/modules/bl_i18n_utils/utils.py b/scripts/modules/bl_i18n_utils/utils.py index 4643c920c94..f70ca3b4576 100644 --- a/scripts/modules/bl_i18n_utils/utils.py +++ b/scripts/modules/bl_i18n_utils/utils.py @@ -237,8 +237,8 @@ def enable_addons(addons=None, support=None, disable=False, check_only=False): continue print(" Enabling module ", module_name) bpy.ops.preferences.addon_enable(module=module_name) - except Exception as e: # XXX TEMP WORKAROUND - print(e) + except BaseException as ex: # XXX TEMP WORKAROUND + print(ex) # XXX There are currently some problems with bpy/rna... # *Very* tricky to solve! diff --git a/scripts/modules/bl_keymap_utils/io.py b/scripts/modules/bl_keymap_utils/io.py index 52071d4e0c7..013caf346dc 100644 --- a/scripts/modules/bl_keymap_utils/io.py +++ b/scripts/modules/bl_keymap_utils/io.py @@ -242,7 +242,7 @@ def _init_properties_from_data(base_props, base_value): setattr(base_props, attr, value) except AttributeError: print(f"Warning: property '{attr}' not found in item '{base_props.__class__.__name__}'") - except Exception as ex: + except BaseException as ex: print(f"Warning: {ex!r}") diff --git a/scripts/modules/bl_previews_utils/bl_previews_render.py b/scripts/modules/bl_previews_utils/bl_previews_render.py index e28f07a0e97..fd5fa97b8e2 100644 --- a/scripts/modules/bl_previews_utils/bl_previews_render.py +++ b/scripts/modules/bl_previews_utils/bl_previews_render.py @@ -153,8 +153,8 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern): scene = None else: rna_backup_restore(scene, render_context.backup_scene) - except Exception as e: - print("ERROR:", e) + except BaseException as ex: + print("ERROR:", ex) success = False if render_context.world is not None: @@ -167,8 +167,8 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern): bpy.data.worlds.remove(world) else: rna_backup_restore(world, render_context.backup_world) - except Exception as e: - print("ERROR:", e) + except BaseException as ex: + print("ERROR:", ex) success = False if render_context.camera: @@ -185,8 +185,8 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern): rna_backup_restore(camera, render_context.backup_camera) rna_backup_restore(bpy.data.cameras[render_context.camera_data, None], render_context.backup_camera_data) - except Exception as e: - print("ERROR:", e) + except BaseException as ex: + print("ERROR:", ex) success = False if render_context.light: @@ -202,16 +202,16 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern): rna_backup_restore(light, render_context.backup_light) rna_backup_restore(bpy.data.lights[render_context.light_data, None], render_context.backup_light_data) - except Exception as e: - print("ERROR:", e) + except BaseException as ex: + print("ERROR:", ex) success = False try: image = bpy.data.images[render_context.image, None] image.user_clear() bpy.data.images.remove(image) - except Exception as e: - print("ERROR:", e) + except BaseException as ex: + print("ERROR:", ex) success = False return success @@ -425,10 +425,10 @@ def do_previews(do_objects, do_collections, do_scenes, do_data_intern): print("Saving %s..." % bpy.data.filepath) try: bpy.ops.wm.save_mainfile() - except Exception as e: + except BaseException as ex: # Might fail in some odd cases, like e.g. in regression files we have glsl/ram_glsl.blend which # references an inexistent texture... Better not break in this case, just spit error to console. - print("ERROR:", e) + print("ERROR:", ex) else: print("*NOT* Saving %s, because some error(s) happened while deleting temp render data..." % bpy.data.filepath) diff --git a/scripts/modules/rna_keymap_ui.py b/scripts/modules/rna_keymap_ui.py index 6d06b867dec..512a375b6d0 100644 --- a/scripts/modules/rna_keymap_ui.py +++ b/scripts/modules/rna_keymap_ui.py @@ -436,7 +436,7 @@ def draw_keymaps(context, layout): # Defined by user preset, may contain mistakes out of our control. try: kc_prefs.draw(box) - except Exception: + except BaseException: import traceback traceback.print_exc() del box diff --git a/scripts/modules/rna_xml.py b/scripts/modules/rna_xml.py index 2e763d8aa5c..ba5f5ac2bec 100644 --- a/scripts/modules/rna_xml.py +++ b/scripts/modules/rna_xml.py @@ -347,7 +347,7 @@ def xml2rna( def _get_context_val(context, path): try: value = context.path_resolve(path) - except Exception as ex: + except BaseException as ex: print("Error: %r, path %r not found" % (ex, path)) value = Ellipsis diff --git a/scripts/modules/sys_info.py b/scripts/modules/sys_info.py index 1c1a1b4200a..fe3f7f42edc 100644 --- a/scripts/modules/sys_info.py +++ b/scripts/modules/sys_info.py @@ -80,8 +80,8 @@ def write_sysinfo(filepath): sys.executable, "--version", ]).strip()) - except Exception as e: - py_ver = str(e) + except BaseException as ex: + py_ver = str(ex) output.write("version: %s\n" % py_ver) del py_ver @@ -232,5 +232,5 @@ def write_sysinfo(filepath): else: output.write("%s (version: %s, path: %s)\n" % (addon, addon_mod.bl_info.get('version', "UNKNOWN"), addon_mod.__file__)) - except Exception as e: - output.write("ERROR: %s\n" % e) + except BaseException as ex: + output.write("ERROR: %s\n" % ex) diff --git a/scripts/startup/bl_operators/image.py b/scripts/startup/bl_operators/image.py index 1f59a929aa1..69b5ac289f8 100644 --- a/scripts/startup/bl_operators/image.py +++ b/scripts/startup/bl_operators/image.py @@ -119,8 +119,8 @@ class ProjectEdit(Operator): # opengl buffer may fail, we can't help this, but best report it. try: bpy.ops.paint.image_from_view() - except RuntimeError as err: - self.report({'ERROR'}, str(err)) + except RuntimeError as ex: + self.report({'ERROR'}, str(ex)) return {'CANCELLED'} image_new = None @@ -166,8 +166,8 @@ class ProjectEdit(Operator): try: bpy.ops.image.external_edit(filepath=filepath_final) - except RuntimeError as re: - self.report({'ERROR'}, str(re)) + except RuntimeError as ex: + self.report({'ERROR'}, str(ex)) return {'FINISHED'} diff --git a/scripts/startup/bl_operators/node.py b/scripts/startup/bl_operators/node.py index 33e830edbb0..92ba0d5aa37 100644 --- a/scripts/startup/bl_operators/node.py +++ b/scripts/startup/bl_operators/node.py @@ -74,8 +74,8 @@ class NodeAddOperator: try: node = tree.nodes.new(type=node_type) - except RuntimeError as e: - self.report({'ERROR'}, str(e)) + except RuntimeError as ex: + self.report({'ERROR'}, str(ex)) return None for setting in self.settings: @@ -91,11 +91,11 @@ class NodeAddOperator: try: setattr(node_data, node_attr_name, value) - except AttributeError as e: + except AttributeError as ex: self.report( {'ERROR_INVALID_INPUT'}, tip_("Node has no attribute %s") % setting.name) - print(str(e)) + print(str(ex)) # Continue despite invalid attribute node.select = True diff --git a/scripts/startup/bl_operators/presets.py b/scripts/startup/bl_operators/presets.py index 31ae9e8edac..e98dfc9e163 100644 --- a/scripts/startup/bl_operators/presets.py +++ b/scripts/startup/bl_operators/presets.py @@ -190,8 +190,8 @@ class AddPresetBase: self.remove(context, filepath) else: os.remove(filepath) - except Exception as e: - self.report({'ERROR'}, tip_("Unable to remove preset: %r") % e) + except BaseException as ex: + self.report({'ERROR'}, tip_("Unable to remove preset: %r") % ex) import traceback traceback.print_exc() return {'CANCELLED'} @@ -250,7 +250,7 @@ class ExecutePreset(Operator): if ext == ".py": try: bpy.utils.execfile(filepath) - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, "Failed to execute the preset: " + repr(ex)) elif ext == ".xml": diff --git a/scripts/startup/bl_operators/screen_play_rendered_anim.py b/scripts/startup/bl_operators/screen_play_rendered_anim.py index dd837c9dcd2..9cab5d09068 100644 --- a/scripts/startup/bl_operators/screen_play_rendered_anim.py +++ b/scripts/startup/bl_operators/screen_play_rendered_anim.py @@ -174,8 +174,8 @@ class PlayRenderedAnim(Operator): try: subprocess.Popen(cmd) - except Exception as e: - err_msg = tip_("Couldn't run external animation player with command %r\n%s") % (cmd, e) + except BaseException as ex: + err_msg = tip_("Couldn't run external animation player with command %r\n%s") % (cmd, ex) self.report( {'ERROR'}, err_msg, diff --git a/scripts/startup/bl_operators/sequencer.py b/scripts/startup/bl_operators/sequencer.py index 2840433cdde..ca14ccb8b4e 100644 --- a/scripts/startup/bl_operators/sequencer.py +++ b/scripts/startup/bl_operators/sequencer.py @@ -299,7 +299,7 @@ class SequencerFadesAdd(Operator): try: if fade.start.x < keyframe.co[0] <= fade.end.x: keyframe_points.remove(keyframe, fast=True) - except Exception: + except BaseException: pass fade_fcurve.update() diff --git a/scripts/startup/bl_operators/text.py b/scripts/startup/bl_operators/text.py index 7acf2ba9ec5..874a46a005b 100644 --- a/scripts/startup/bl_operators/text.py +++ b/scripts/startup/bl_operators/text.py @@ -66,14 +66,14 @@ class TEXT_OT_jump_to_file_at_point(Operator): try: args.extend([Template(arg).substitute(**template_vars) for arg in shlex.split(text_editor_args)]) - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, "Exception parsing template: %r" % ex) return {'CANCELLED'} try: # With `check=True` if `process.returncode != 0` an exception will be raised. subprocess.run(args, check=True) - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, "Exception running external editor: %r" % ex) return {'CANCELLED'} diff --git a/scripts/startup/bl_operators/userpref.py b/scripts/startup/bl_operators/userpref.py index 5e40d7aeac0..aa37bb3f293 100644 --- a/scripts/startup/bl_operators/userpref.py +++ b/scripts/startup/bl_operators/userpref.py @@ -228,7 +228,7 @@ class PREFERENCES_OT_keyconfig_import(Operator): shutil.copy(self.filepath, path) else: shutil.move(self.filepath, path) - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, tip_("Installing keymap failed: %s") % ex) return {'CANCELLED'} diff --git a/scripts/startup/bl_operators/wm.py b/scripts/startup/bl_operators/wm.py index 96c43fc6adf..c3c3c2349d6 100644 --- a/scripts/startup/bl_operators/wm.py +++ b/scripts/startup/bl_operators/wm.py @@ -1825,12 +1825,12 @@ class WM_OT_properties_edit(Operator): if prop_type_new == 'PYTHON': try: new_value = eval(self.eval_string) - except Exception as ex: + except BaseException as ex: self.report({'WARNING'}, "Python evaluation failed: " + str(ex)) return {'CANCELLED'} try: item[name] = new_value - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, "Failed to assign value: " + str(ex)) return {'CANCELLED'} if name_old != name: @@ -2023,7 +2023,7 @@ class WM_OT_properties_edit_value(Operator): rna_item = eval("context.%s" % self.data_path) try: new_value = eval(self.eval_string) - except Exception as ex: + except BaseException as ex: self.report({'WARNING'}, "Python evaluation failed: " + str(ex)) return {'CANCELLED'} rna_item[self.property_name] = new_value @@ -2992,7 +2992,7 @@ class WM_OT_batch_rename(Operator): if action.use_replace_regex_src: try: re.compile(action.replace_src) - except Exception as ex: + except BaseException as ex: re_error_src = str(ex) row.alert = True @@ -3018,7 +3018,7 @@ class WM_OT_batch_rename(Operator): if re_error_src is None: try: re.sub(action.replace_src, action.replace_dst, "") - except Exception as ex: + except BaseException as ex: re_error_dst = str(ex) row.alert = True @@ -3094,14 +3094,14 @@ class WM_OT_batch_rename(Operator): if action.use_replace_regex_src: try: re.compile(action.replace_src) - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, "Invalid regular expression (find): " + str(ex)) return {'CANCELLED'} if action.use_replace_regex_dst: try: re.sub(action.replace_src, action.replace_dst, "") - except Exception as ex: + except BaseException as ex: self.report({'ERROR'}, "Invalid regular expression (replace): " + str(ex)) return {'CANCELLED'} diff --git a/scripts/startup/bl_ui/space_toolsystem_common.py b/scripts/startup/bl_ui/space_toolsystem_common.py index 95c2317f341..208eb08553c 100644 --- a/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/scripts/startup/bl_ui/space_toolsystem_common.py @@ -242,7 +242,7 @@ class ToolSelectPanelHelper: filepath = os.path.join(dirname, icon_name + ".dat") try: icon_value = bpy.app.icons.new_triangles_from_file(filepath) - except Exception as ex: + except BaseException as ex: if not os.path.exists(filepath): print("Missing icons:", filepath, ex) else: