能否在Visual Studio调试模式外自动定位NullReferenceException的空变量?
自动定位NullReferenceException中的空成员(Unity环境下)
当执行包含多层嵌套成员的赋值代码时,例如:
Obj.Field.NextField.NextNextField = NextObj.OtherField.NextOtherField.NextNextOtherField;
若等式两侧除最后一个成员外的任意变量为空,会触发NullReferenceException,但无法直接定位具体是哪个成员为空。
当前我通过自定义方法手动排查:
public static void PrintNullOrigin(params object[] _args) { for (int i = 0; i < _args.Length; i++) { if (_args[i] == null) { print(_args[i] + " is null!"); } } }
调用时需要手动传入所有可能为空的成员:
PrintNullOrigin(Obj, NextObj, Obj?.Field, NextObj?.OtherField, ...);
我想知道是否存在一种方案,能在每次抛出NullReferenceException时,自动通过日志完成空成员的定位?我曾尝试通过Exception对象获取异常所在行的成员,但未找到简便方法。
关键限制:必须在Visual Studio调试模式外实现该功能,因为Unity中使用VS调试模式容易崩溃且存在性能损耗。
内容的提问来源于stack exchange,提问作者seppel
相关产品推荐
相关产品推荐

