首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果[super init]返回nil,为什么不抛出异常?

[super init]返回nil时,不会抛出异常的原因是在于Objective-C的初始化方法遵循特定的规则。在Objective-C中,初始化方法遵循以下规则:

  1. 初始化方法应该以init开头。
  2. 初始化方法可以有一个或多个参数。
  3. 初始化方法应该返回一个指向已初始化对象的指针。
  4. 如果初始化成功,初始化方法应该返回已初始化对象的指针。如果初始化失败,应该返回nil
  5. 在初始化方法中,应该先调用父类的初始化方法,然后再执行子类的初始化操作。

在这个问题中,[super init]是在子类的初始化方法中调用父类的初始化方法。如果父类的初始化方法返回nil,则表示父类的初始化失败,此时子类的初始化方法应该立即返回nil,而不是抛出异常。这是因为在Objective-C中,初始化方法的调用者应该检查返回值,而不是捕获异常。如果初始化失败,调用者应该处理返回值为nil的情况,而不是假设对象已经成功初始化。

总之,[super init]返回nil时,不会抛出异常是因为Objective-C的初始化方法规则要求初始化方法的调用者检查返回值,而不是捕获异常。

相关搜索:为什么在遍历列表时不抛出并发修改异常?为什么python unittest assertRaises方法不注册抛出的异常?从WebApi返回自定义错误响应,不抛出异常为什么spark dataframe.take抛出异常不兼容的类型?如果Task<HttpResponseMessage>.IsCompleted为真,为什么Task<HttpResponseMessage>.Result会抛出异常?如果没有抛出异常表明操作成功,则返回布尔值true如果更改返回值类型,为什么不更改页面如果x是list,为什么x + ="ha"可以工作,而x = x +"ha"会抛出异常?Play Framework:如果在JSON解析过程中抛出异常,则返回400的BodyParser为什么php decimal-ext会对错误的compareTo方法返回类型抛出异常?为什么TypeScript在返回隐式类型返回对象的无效属性时不抛出错误?为什么MediaPlayer.create在类的开头初始化时抛出NullPointer异常,而在OnCreate方法中初始化时不抛出呢?如何使axios在遇到HTTP302时不抛出异常,而是随它一起返回AxiosResponse?如果使用从方法返回的lambda,为什么事件取消订阅会起作用(“不泄漏”)?为什么我的函数不返回值,但如果我使用print就可以了?如果include_directories中的某个路径不存在,为什么CMakeLists不(在编译期间)抛出警告/错误?在执行plsql block返回查询结果时,如果没有找到DB.When数据中存在的数据,则查询结果不返回任何异常为什么在这种情况下我不能执行console.log,而在这里,如果我返回temps,为什么函数不工作?
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券