有没有办法指定方法可能会出现哪些异常raise
,所以知道rescue
可能需要哪些异常?
在 Java ( Doc ) 中,它看起来是这样的:
void example(int: x) throws Exception {
if x > 42 throw new Exception;
}
也许是这样的!?
# typed: true
extend T::Sig
sig {params(x: Integer).void.raises(StandardError)}
def example(x)
raise RuntimeError if x > 42
end
不要混淆:通常的异常是raise ... rescue
在 Ruby 中处理的。
begin
raise StandardError
rescue StandardError
end
但是您也可以在 Ruby 中使用throw
对象和它们。catch
catch(:something) do
throw :something
end
我不经常使用这个。实际上试图完全避免它。但是 Sorbet 也可能有这样的语法!?例如:
# typed: true
extend T::Sig
sig {params(x: Integer).void.throws(:something)}
def example(x)
throw :something if x > 42
end
catch (:something) {example(42)}