使用 Genie 处理错误
Handling errors with Genie
我正在尝试将 python class 重构为 Genie,但我对如何处理错误感到困惑。一些指点将不胜感激。
如果我理解正确的话,使用 Genie 处理错误的方法是使用 Try...except 块,但是如何将以下类型的错误处理转换为此范例:
# Enable dictionary/list-style access to options and arguments.
def __getitem__(self, key):
if isinstance(key, int):
if key < len(self.arguments):
return self.arguments[key]
else:
raise ArgParserError(
"positional argument index [%s] is out of bounds" % key
)
else:
option = self._get_opt(key)
return option.value
我现在的代码看起来像(在 Genie 中):
def getitem (key:int):string
if key.is_int()
if key < len(_arguments)
return _arguments[key]
else
raise ArgParserError(
"positional argument index [%s] is out of bounds", key
)
else
var option = _get_opt(key)
return option.value
这是一个伪代码,我只是对问题建模,我知道它不会按原样编译。我只是在寻找有关如何从 python.
转换“'raise'”命令的指针
您需要将错误类型定义为exception
,然后确定您的getitem
函数raises
这样的错误:
exception ArgParserError
OUT_OF_BOUNDS
def getitem( key:int ):string raises ArgParserError
if key < len(_arguments)
return _arguments[key]
else
raise new ArgParserError.OUT_OF_BOUNDS(
"positional argument index [%s] is out of bounds", key
)
Genie 是静态类型的,因此 if key.is_int()
是不必要的。 Vala 编译器将在编译时检查所有对 getitem
函数的调用是否传递整数作为参数。
另一种方法是使用 out
参数作为结果值,并使用函数的 return 值来指示结果是否有效:
def getitem( key:uint, out value:string ):bool
result:bool = false
value = ""
if key < _arguments.length
value = _arguments[ key ]
result = true
else
info( "positional argument index [%s] is out of bounds", key )
return result
通过将键设为无符号整数,uint
,无法传递负索引。对 info()
的调用将记录越界索引的一些详细信息,以供稍后调试时使用。
我正在尝试将 python class 重构为 Genie,但我对如何处理错误感到困惑。一些指点将不胜感激。
如果我理解正确的话,使用 Genie 处理错误的方法是使用 Try...except 块,但是如何将以下类型的错误处理转换为此范例:
# Enable dictionary/list-style access to options and arguments.
def __getitem__(self, key):
if isinstance(key, int):
if key < len(self.arguments):
return self.arguments[key]
else:
raise ArgParserError(
"positional argument index [%s] is out of bounds" % key
)
else:
option = self._get_opt(key)
return option.value
我现在的代码看起来像(在 Genie 中):
def getitem (key:int):string
if key.is_int()
if key < len(_arguments)
return _arguments[key]
else
raise ArgParserError(
"positional argument index [%s] is out of bounds", key
)
else
var option = _get_opt(key)
return option.value
这是一个伪代码,我只是对问题建模,我知道它不会按原样编译。我只是在寻找有关如何从 python.
转换“'raise'”命令的指针您需要将错误类型定义为exception
,然后确定您的getitem
函数raises
这样的错误:
exception ArgParserError
OUT_OF_BOUNDS
def getitem( key:int ):string raises ArgParserError
if key < len(_arguments)
return _arguments[key]
else
raise new ArgParserError.OUT_OF_BOUNDS(
"positional argument index [%s] is out of bounds", key
)
Genie 是静态类型的,因此 if key.is_int()
是不必要的。 Vala 编译器将在编译时检查所有对 getitem
函数的调用是否传递整数作为参数。
另一种方法是使用 out
参数作为结果值,并使用函数的 return 值来指示结果是否有效:
def getitem( key:uint, out value:string ):bool
result:bool = false
value = ""
if key < _arguments.length
value = _arguments[ key ]
result = true
else
info( "positional argument index [%s] is out of bounds", key )
return result
通过将键设为无符号整数,uint
,无法传递负索引。对 info()
的调用将记录越界索引的一些详细信息,以供稍后调试时使用。