array|译:Gamemaker Studio 2.3 语法详解( 七 )


stacktrace :debug_get_callstack
}
}catch(e){
show_debug_message(e);// 输出上述 struct
}
Try-catch 块可以嵌套在同一个或不同的脚本中 。
当这种情况发生时 , 最近的捕获块将被触发 。
如果你不想处理一个异常 , 你可以“重新抛出”它 。
try{
try{
return10/a_missing_variable;
}catch(e){
if(string_pos("DoRem",e.message)!=0){
show_debug_message ("Caught `"+e.message +"` in inner catch!");
}else{
throwe;
}
}
}catch(e){
show_debug_message("Caught `"+e.message +"` in outer catch!");
}
如果一个异常没有被捕获 , 你会得到熟悉的错误弹出窗口 。 除非……
exception_unhandled_handler
在可以被认为是最后一道防线的情况下 , GMS2 现在还提供了一个函数 , 当一个异常没有被捕获 , 你的游戏即将关闭时 , 这个功能将被调用 。 这覆盖了默认的错误弹出窗口 。
exception_unhandled_handler(function(e){
show_message("Trouble!\n"+string(e.longMessage));
});
show_error("hey",true);
正如文档所指出的 , 在这一点上你能做的不多 , 但你可以将错误文本(连同任何可能证明有用的上下文)保存到一个文件中 , 这样你就可以在游戏开始时加载它 , 并为用户提供一个报告 。
较小的添加物
主要是便利功能 。
String functions
增加了 string_pos_ext 、 string_last_pos 和 string_last_pos_ext, 以处理从偏移量和/或从字符串末尾开始搜索子串的问题 , 这对解析数据很有帮助--例如 , 见我以前的“在分隔符上分割字符串”的帖子 。
Array functions
增加了一些数组函数来处理数组 。
array_resize(array, newsize) 这将一个数组的大小调整为新的大小 , 要么在数组的末尾添加零 , 要么删除元素以满足大小 。
vararr =[1,2,3];
array_resize (arr,5);
show_debug_message (arr);// [1, 2, 3, 0, 0]
array_resize (arr,2);
show_debug_message (arr);// [1, 2]
使得其他各种实用函数得以实现 。
array_push(array, ...values) 将一个或多个值添加到一个数组的末端 。
vararr =[1,2,3];
array_push (arr,4);
show_debug_message (arr);// [1, 2, 3, 4]
array_push (arr,5,6);
show_debug_message (arr);// [1, 2, 3, 4, 5, 6]
array_insert (array,index,...values)
array_insert(array, index, ...values) 在一个数组中的偏移处插入一个或多个值 。
vararr =[1,2,3];
array_insert (arr,1,"hi!");
show_debug_message (arr);// [1, "hi!", 2, 3]
array_pop(array)?value 移除数组中的最后一个元素 , 并将其返回 。
vararr =[1,2,3];
show_debug_message (array_pop(arr));// 3

推荐阅读