Objective c 可以使用try…catch机制来避免内存崩溃吗?

Objective c 可以使用try…catch机制来避免内存崩溃吗?,objective-c,Objective C,我真的很想知道,是否有可能使用try。。。捕获机制,我们可以避免应用程序的内存崩溃 假设我们期望内存泄漏的程序部分保存在try…catch块下,如果程序崩溃(即内存泄漏),则执行catch语句。所以我们可以防止程序崩溃 可能吗?如果是,如何或如果不是,为什么不 一个try/catch块用于捕获异常并阻止它在调用堆栈中向上传播 其思想是,您在知道如何处理它的地方捕获它,然后您就有机会执行代码以响应异常 这不是一个可以阻止任何事情的神奇解决方案,它只是我上面所说的。除了例外情况,你做什么才是最重要的

我真的很想知道,是否有可能使用try。。。捕获机制,我们可以避免应用程序的内存崩溃

假设我们期望内存泄漏的程序部分保存在try…catch块下,如果程序崩溃(即内存泄漏),则执行catch语句。所以我们可以防止程序崩溃


可能吗?如果是,如何或如果不是,为什么不

一个try/catch块用于捕获异常并阻止它在调用堆栈中向上传播

其思想是,您在知道如何处理它的地方捕获它,然后您就有机会执行代码以响应异常

这不是一个可以阻止任何事情的神奇解决方案,它只是我上面所说的。除了例外情况,你做什么才是最重要的

内存泄漏和崩溃不是一回事,很少有程序因为内存泄漏而崩溃,除非它确实耗尽了内存。内存泄漏很少在事后“修复”。修复内存泄漏的正确方法(通常是唯一的方法)是首先避免它的发生

此外,是的,在某种程度上,您可以通过添加try/catch块来防止程序崩溃,但您唯一成功的方法是对用户隐藏崩溃,然后让程序继续运行。“撞车”并不总是可以安全地忽略,或者更确切地说,它们通常不可以安全地忽略

如果您正在寻找一些关于如何避免程序崩溃的全面建议,以下是我的建议:

  • 编写一个工作正常的程序

我认为我们需要更多地了解您遇到的问题类型,或者您需要发布一个更清晰的问题。

一个try/catch块用于捕获异常并阻止它在您的调用堆栈中向上传播

其思想是,您在知道如何处理它的地方捕获它,然后您就有机会执行代码以响应异常

这不是一个可以阻止任何事情的神奇解决方案,它只是我上面所说的。除了例外情况,你做什么才是最重要的

内存泄漏和崩溃不是一回事,很少有程序因为内存泄漏而崩溃,除非它确实耗尽了内存。内存泄漏很少在事后“修复”。修复内存泄漏的正确方法(通常是唯一的方法)是首先避免它的发生

此外,是的,在某种程度上,您可以通过添加try/catch块来防止程序崩溃,但您唯一成功的方法是对用户隐藏崩溃,然后让程序继续运行。“撞车”并不总是可以安全地忽略,或者更确切地说,它们通常不可以安全地忽略

如果您正在寻找一些关于如何避免程序崩溃的全面建议,以下是我的建议:

  • 编写一个工作正常的程序

我认为我们需要更多地了解您遇到的问题类型,或者您需要发布一个更清晰的问题。

我不相信任何进程内系统在内存不足的情况下会做正确的事情。我们的系统在PermGen异常发生时完全锁定,需要kill-9来摆脱

如果您想让系统自我纠正,请将其包装在脚本或系统中,以监控健康状况、心跳或诊断页面或任何有意义的内容。如果您没有收到任何健康指示,请将其杀死(如有必要,请用力)并重新启动

最好的方法是使用测试和验证来监控内存(和磁盘)的使用情况,并确保您真正了解系统的行为,并且正确地进行了配置,这样就不会发生这种情况


重新启动解决方案是一个糟糕的选择,因为您必须测试并确定您可以随时终止应用程序,并确信它可以正确重新启动,这可能更困难。

我不相信任何进程内系统在内存不足的情况下做正确的事情。我们的系统在PermGen异常发生时完全锁定,需要kill-9来摆脱

如果您想让系统自我纠正,请将其包装在脚本或系统中,以监控健康状况、心跳或诊断页面或任何有意义的内容。如果您没有收到任何健康指示,请将其杀死(如有必要,请用力)并重新启动

最好的方法是使用测试和验证来监控内存(和磁盘)的使用情况,并确保您真正了解系统的行为,并且正确地进行了配置,这样就不会发生这种情况

重新启动解决方案是一个糟糕的选择,因为您必须测试并确定您可以随时终止应用程序,并确信它可以正确重新启动,这可能会更困难。

如果您问“我可以用try-catch捕捉分段错误吗”,答案是否定的

try-catch用于处理Objective-C异常,即通过执行
@throw
语句引发的异常。由空指针解引用等引起的分段故障由操作系统生成,是Unix信号的示例,只能由操作系统级系统调用(如sigaction(2)系统调用)捕获和处理。即使如此,您唯一明智的做法是立即终止程序,因为您的堆或堆栈可能已损坏。

如果您问“我可以用try-catch捕捉分段错误吗”,答案是否定的

try-catch用于处理Objective-C异常,即通过执行
@throw
语句引发的异常。由空指针解引用等引起的分段故障由操作系统生成,是Unix信号的示例,只能由操作系统级系统调用(如sigaction(2)系统调用)捕获和处理。即使这样,你唯一明智的做法就是