From cbe7f8d49cb80e53948562c797c853b84f25c1e1 Mon Sep 17 00:00:00 2001 From: Alejandro Sirgo Rica Date: Wed, 3 Apr 2024 10:54:51 +0200 Subject: src: use explicit exception types in except Exception blocks Capture only the relevant exception types in each except block. The capture of the Exception type means hiding information for unhandled error cases, even for syntax errors in the codebase. Using a more fine grained exception filtering improves error traceability. --- src/live/ogOperations.py | 6 +++--- src/utils/sw_inventory.py | 2 +- src/utils/uefi.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/live/ogOperations.py b/src/live/ogOperations.py index 0c08459..02af011 100644 --- a/src/live/ogOperations.py +++ b/src/live/ogOperations.py @@ -52,7 +52,7 @@ class OgLiveOperations: try: proc = subprocess.call(["pkill", "-9", "browser"]) proc = subprocess.Popen(["browser", "-qws", url]) - except Exception as e: + except OSError as e: raise OgError('Cannot restart browser') from e def _refresh_payload_disk(self, cxt, part_setup, num_disk): @@ -144,7 +144,7 @@ class OgLiveOperations: try: r = shutil.copy(src, dst) tip_write_csum(image_name) - except Exception as e: + except (OSError, OgError) as e: raise OgError(f'Error copying image {image_name} to cache. Reported: {e}') from e def _restore_image_unicast(self, repo, name, devpath, cache=False): @@ -245,7 +245,7 @@ class OgLiveOperations: shell=True, executable=OG_SHELL) (output, error) = ogRest.proc.communicate() - except Exception as e: + except OSError as e: raise OgError(f'Error when running "shell run" subprocess: {e}') from e if ogRest.proc.returncode != 0: diff --git a/src/utils/sw_inventory.py b/src/utils/sw_inventory.py index c7bb458..5f137f2 100644 --- a/src/utils/sw_inventory.py +++ b/src/utils/sw_inventory.py @@ -88,7 +88,7 @@ def _get_package_set_windows(hivepath): h = hivex.Hivex(hivepath) _fill_package_set_1(h, packages) _fill_package_set_2(h, packages) - except Exception as e: + except RuntimeError as e: logging.error(f'Hivex was not able to operate over {hivepath}. Reported: {e}') return packages diff --git a/src/utils/uefi.py b/src/utils/uefi.py index 17b35cb..0906ae9 100644 --- a/src/utils/uefi.py +++ b/src/utils/uefi.py @@ -139,12 +139,12 @@ def copy_windows_efi_bootloader(disk, partition): if os.path.exists(destination_dir): try: shutil.rmtree(destination_dir) - except Exception as e: + except OSError as e: raise OgError(f'Failed to delete {destination_dir}: {e}') from e logging.info(f'Copying {loader_dir} into {destination_dir}') try: shutil.copytree(loader_dir, destination_dir) - except Exception as e: + except OSError as e: raise OgError(f'Failed to copy {loader_dir} into {destination_dir}: {e}') from e finally: umount(mountpoint) -- cgit v1.2.3-18-g5258