瀏覽代碼

Die properly in case of non-existent plugin

Alois Mahdal 10 年之前
父節點
當前提交
d50d523839
共有 1 個檔案被更改,包括 10 行新增4 行删除
  1. 10
    4
      include/gmon.py

+ 10
- 4
include/gmon.py 查看文件

@@ -73,9 +73,12 @@ class Subcommand(object):
73 73
 
74 74
     def _load_plugin(self, pluginpath):
75 75
         modpath = "%s/%s.py" % (pluginpath, self.name)
76
-        with open(modpath) as fh:
77
-            module = imp.load_module(self.name, fh, modpath,
78
-                                     (".py", "r", imp.PY_SOURCE))
76
+        try:
77
+            with open(modpath) as fh:
78
+                module = imp.load_module(self.name, fh, modpath,
79
+                                         (".py", "r", imp.PY_SOURCE))
80
+        except IOError:
81
+            raise GmonPluginError(self.name)
79 82
         self.plugin = module.Plugin(self.plugindata)
80 83
 
81 84
     def _format_output(self, raw):
@@ -95,7 +98,10 @@ class App:
95 98
 
96 99
     def __init__(self, cmdargs):
97 100
         self._set_pluginpath()
98
-        self.subcommand = Subcommand(cmdargs, self.pluginpath)
101
+        try:
102
+            self.subcommand = Subcommand(cmdargs, self.pluginpath)
103
+        except GmonPluginError as e:
104
+            self.die("no such plugin: %s" % e)
99 105
 
100 106
     def _set_pluginpath(self):
101 107
         mypath = os.path.dirname(os.path.realpath(sys.argv[0]))