String 如何将Rebol错误格式化为字符串?
雷波的错误!类型作为一个对象返回,您可以从中检查和提取属性String 如何将Rebol错误格式化为字符串?,string,exception-handling,error-handling,rebol,rebol3,String,Exception Handling,Error Handling,Rebol,Rebol3,雷波的错误!类型作为一个对象返回,您可以从中检查和提取属性 >> result: try [1 / 0] ** Math error: attempt to divide by zero ** Where: / try ** Near: / 0 >> probe result make error! [ code: 400 type: 'Math id: 'zero-divide arg1: none arg2: none
>> result: try [1 / 0]
** Math error: attempt to divide by zero
** Where: / try
** Near: / 0
>> probe result
make error! [
code: 400
type: 'Math
id: 'zero-divide
arg1: none
arg2: none
arg3: none
near: [/ 0]
where: [/ try]
]
...
请注意,当该错误出现在控制台上并且是评估链的最后一个值时,它会将其转换为字符串并将其呈现给用户。e、 g.“数学错误:试图除以零”
如何在自己的代码中生成此字符串?我知道我可以深入挖掘
系统
对象并找到那些字符串,然后自己尝试将它们组合起来。但是二进制文件中不是有一些官方函数可以实现这一点吗?在REBOL3中,您可以简单地使用它来转换错误!对象转换为其漂亮的打印表示形式:
>> err: try [1 / 0]
...
>> form err
== {** Math error: attempt to divide by zero
** Where: / try
** Near: / 0
}
在REBOL3中,您可以简单地使用转换错误!对象转换为其漂亮的打印表示形式:
>> err: try [1 / 0]
...
>> form err
== {** Math error: attempt to divide by zero
** Where: / try
** Near: / 0
}
您可以像这样创建自己的错误,其中错误对象上的“do”会处理错误
make-sl4a-error: func [
message
][
do make error! [
type: 'Access
id: 'Protocol
arg1: message
]
]
在REBOL2中,您需要在形成之前解除错误
>> err: try [ 1 / 0 ]
>> print mold disarm err
make object! [
code: 400
type: 'math
id: 'zero-divide
arg1: none
arg2: none
arg3: none
near: [1 / 0]
where: none
]
您可以像这样创建自己的错误,其中错误对象上的“do”会处理错误
make-sl4a-error: func [
message
][
do make error! [
type: 'Access
id: 'Protocol
arg1: message
]
]
在REBOL2中,您需要在形成之前解除错误
>> err: try [ 1 / 0 ]
>> print mold disarm err
make object! [
code: 400
type: 'math
id: 'zero-divide
arg1: none
arg2: none
arg3: none
near: [1 / 0]
where: none
]
对于Rebol2,您可以使用以下函数(我从Doc或Gabriele IIRC获得) 您需要解除您的错误:
>> print form-error/all disarm try [1 / 0]
** Math Error: Attempt to divide by zero
** Near: 1 / 0
对于Rebol2,您可以使用以下函数(我从Doc或Gabriele IIRC获得) 您需要解除您的错误:
>> print form-error/all disarm try [1 / 0]
** Math Error: Attempt to divide by zero
** Near: 1 / 0
人力资源管理。嗯,那很容易。嗯,那很容易。很高兴知道……但我不是这么问的!!(Rebol3 AFAIK中没有武装错误)好吧,既然你当时没有接受Earl的答案,我想你一定是在问别的问题,而不是关于错误的形式或模式!顺便说一句,犯错误!只创建一个错误对象。它在使用前必须武装好。很高兴知道……但我不是这么要求的!!(Rebol3 AFAIK中没有武装错误)好吧,既然你当时没有接受Earl的答案,我想你一定是在问别的问题,而不是关于错误的形式或模式!顺便说一句,犯错误!只创建一个错误对象。它在使用前必须带上武器。好吧,那是一口。Rebol3方法的好理由!好吧,那是一口。Rebol3方法的好理由!