异常处理 --- 一些垂死挣扎的代码
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://guoxiaoxin.blogbus.com/logs/74067257.html
我们可以在delegate的terminateWithException里,写一些垂死挣扎的代码 - 例如保存数据,例如汇报crash情况到服务器.
void exceptionHandler(NSException *exception)
{
id delegate = [[UIApplication sharedApplication] delegate];
if([delegate respondsToSelector:@selector(terminateWithException:)])
{
[delegate performSelector:@selector(terminateWithException:) withObject:exception];
}
}
void signalHandler(int sig, siginfo_t *info, void *context)
{
// signal exception
NSException *e = [NSException exceptionWithName:@"signal exception"
reason:[NSString stringWithFormat:@"signal %d", sig]
userInfo:nil];
exceptionHandler(e);
}
int main(int argc, char *argv[])
{
// For uncaultexception
NSSetUncaughtExceptionHandler(&exceptionHandler);
// For signals
struct sigaction sigAction;
sigAction.sa_sigaction = signalHandler;
sigAction.sa_flags = SA_SIGINFO;
sigemptyset(&sigAction.sa_mask);
sigaction(SIGQUIT, &sigAction, NULL);
sigaction(SIGILL, &sigAction, NULL);
sigaction(SIGTRAP, &sigAction, NULL);
sigaction(SIGABRT, &sigAction, NULL);
sigaction(SIGEMT, &sigAction, NULL);
sigaction(SIGFPE, &sigAction, NULL);
sigaction(SIGBUS, &sigAction, NULL);
sigaction(SIGSEGV, &sigAction, NULL);
sigaction(SIGSYS, &sigAction, NULL);
sigaction(SIGPIPE, &sigAction, NULL);
sigaction(SIGALRM, &sigAction, NULL);
sigaction(SIGXCPU, &sigAction, NULL);
sigaction(SIGXFSZ, &sigAction, NULL);
// startup
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, @"NBApplication", @"twitBirdAppDelegate");
[pool release];
return retVal;
}
crash , 就两种情况,一种是异常,一种是中断.
void exceptionHandler(NSException *exception) 处理异常
void signalHandler(int sig, siginfo_t *info, void *context) 处理中断.
- (void)terminateWithException:(NSException*)e
{
static BOOL deadway = NO;
if(deadway)
return;
deadway = YES;
NSLog(@"Exception --- %@", e);
[self applicationWillTerminate:[UIApplication sharedApplication]];
deadway = NO;
}
收藏到:Del.icio.us
异常处理 --- 一些垂死挣扎的代码相关推荐
- 基于Javaweb的小项目(类似于qqzone) 4 ——通用代码模块 - 过滤器、异常处理、servlet通用代码块
1.过滤器Filter 对页面传回的内容进过滤,并设置编码,防止出现中文乱码问题 [CharacterEncodingFilter.java] package com.javaweb.qqzone.m ...
- ssm 异常捕获 统一处理_SpringMVC 统一异常处理介绍及实战
背景 什么是统一异常处理 目标 统一异常处理实战 用 Assert(断言) 替换 throw exception 定义统一异常处理器类 扩展 总结 <Java 2019 超神之路> < ...
- 看看人家 SpringBoot 的全局异常处理,多么优雅...
点击关注公众号,Java干货及时送达 本篇文章主要介绍的是SpringBoot项目进行全局异常的处理. SpringBoot全局异常准备 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程 ...
- 看看人家 SpringBoot 的全局异常处理多么优雅...
1 SpringBoot全局异常准备 说明:如果想直接获取工程那么可以直接跳到底部,通过链接下载工程代码. 开发准备 环境要求JDK:1.8SpringBoot:1.5.17.RELEASE 首先还是 ...
- C错误异常处理,异常处理
预处理器标识#error的目的是什么啊? 指令 用途# 空指令,无任何效果#include 包含一个源代码文件#define 定义宏#undef 取消已定义的宏#if 如果给定条件为真,则编译下面代码 ...
- java 规范异常的处理_规范-异常处理
1. 为什么需要规范的异常处理? 首先,规范异常处理也是为了后期能更好的维护,减少程序出错,别再哪里都try{}catch(){},对于有强迫症的我,规范处理异常是必不可少的:规范异常处理能让你代码变 ...
- 第三十九篇 Python异常处理
一. 什么是异常 异常就是程序运行时发生的错误,在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止,在python中,错误触发的异常如下 错误分成两种: #语法 ...
- Spring MVC之异常处理
2019独角兽企业重金招聘Python工程师标准>>> Spring MVC之异常处理 Spring MVC提供了几种异常处理的方法: 对于每个异常类的处理 对于每个@Control ...
- c语言常用的异常处理,C语言中的异常处理
一 前言: 异常处理,对于做面向对象开发的开发者来说是再熟悉不过了,例如在C#中有 try { ... } catch( Exception e){...} finally{ ..... } 在C++ ...
最新文章
- .NET Core竟然无法在Mac下进行build
- 如何用ActionScript制作绚丽的特效——Silk
- 【机器学习】基于实战项目的SVM算法库使用方法详解
- python打印星星居中_python中怎么打印星星
- silverlight bing maps sdk MapControl Sdk
- 当年中国的“四大工学院”,现在都咋样了?
- matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号
- php追加数据,php追加数据到mysql
- elementUI Drawer 抽屉 Dialog 对话框 等弹出组件的遮罩层以及多层遮罩解决办法
- 数据库工作笔记018---MySQL 中 You can't specify target table '表名' for update in FROM clause错误解决办法
- 图像识别DM8127开发攻略——UBOOT的移植说明
- 定义或修改本地屏幕元素的注释
- 北师大有计算机技术专硕嘛,北师大新增一硕士专业 称要培养作家
- 不打补贴战,快狗打车凭什么冲刺“同城货运第一股”?
- Go工程管理和业务实践
- Newton's Dark Secrets《牛顿探索》
- 【离散数学】集合的基数
- My 2007 Fash game: Elite Shooter
- 访问者模式(Vistor Pattern)
- 商淘软件多用户商城系统WSTMart v2.0.8程序发布
热门文章
- Unity3d C# 实现UGUI 输入框调用软键盘输入的完整功能(含工程源码,适用触屏一体机等)
- 如何解决MySQL无法打开之——错误2013:lose connection to MySQL blablabla
- java窗口程序实例_Java Swing快速构建窗体应用程序
- 移动距离 奇妙的数字
- RDKit|分子指纹提取、相似性比较及应用
- js算法之旅:用队列和栈计算出扑克玩:拖板车(小猫钓鱼) 游戏的结果
- 关于HTTP中的数据协商
- python 在linux中把doc转换为docx格式文件(支持word97和word2003)
- 小米手机运行linux,小米6成功刷入UOS国产操作系统,可开机运行
- 从NT开发过程中看到的东西