请教一下大家对Unity(C#)中的Exception都是怎么的处理方法?
public class Car : MonoBehaviour
{
//车门的物件
public GameObject door = null;
void Start()
{
//从门物件中找到脚本,并关起门来
door.getComponent<Door>().Close();
}
}
以这段程式码为例,在Unity之下可能在两个地方发生
NullReferenceException,但是真的有必要在使用之前
去检查物件或脚本取出来是不是为null吗?
我之所以会这样问是因为,Editor会在run time出错的
时候告诉我哪边发生Exception,堆叠会告诉我一切,这
样我马上就知道哪边有问题,但是如果我写了检查变成
像下面这样
void Start()
{
if(door == null)
Debug.Error("door is null");
var _Com = door.getComponent<Door>();
if(_Com == null) reutrn ;
_Com.Close();
}
我做了两种例外的处理,第一种是抛Unity的Error,但这跟
Exception没什么差别,Exception还不见了,变成一个"讯息"
第二种是不处理,就直接return避免跳Exception或是造成游戏
异常的崩馈,但这样就好像只是骗自己这边没问题一样,但事实
上就是"车门没关"....
但是两种比较起来,好像都没有比较好,还是说一般例外根本
不能这样处理,是我观念一直错误?
到目前为止,比较能说服我自己的想法就是保持原样,因为我在开
发阶段靠Exception跟堆叠很快就可以让我找到问题,并且修改。
想跟大家讨论在这方面都是怎么处理?