1. // DivTest.h
  2. // 异常的处理
  3. //
  4. // Created by ma c on 15/8/11.
  5. // Copyright (c) 2015年. All rights reserved.
  6. //
  7.  
  8. #import <Foundation/Foundation.h>
  9.  
  10. @interface DivTest : NSObject
  11. @property(nonatomic,assign)CGFloat x;
  12. @property(nonatomic,assign)CGFloat y;
  13. @property(nonatomic,assign)CGFloat div;
  14. -(id)initWithX:(CGFloat) m andY:(CGFloat) n;
  15. -(void)print;
  16. @end

// 上面为类的声明部分

//类的实现部分

  1. // DivTest.m
  2. // 异常的处理
  3. //
  4. // Created by ma c on 15/8/11.
  5. // Copyright (c) 2015年. All rights reserved.
  6. //
  7.  
  8. #import "DivTest.h"
  9. #import "MyException.h"
  10. @implementation DivTest
  11. -(id)initWithX:(CGFloat) m andY:(CGFloat) n
  12. {
  13. MyException *me;
  14. self = [super init];
  15. if(self!=nil)
  16. {
  17. _x = m;
  18. _y = n;
  19. if(_y==)
  20. {//如果_y=0,说明除数为零了,抛出异常给调用者去处理
  21. @throw me = [[MyException alloc]initWithName:@"MyException:" reason:@"除数为零了" userInfo:nil];
  22. }
  23. }
  24. return self;
  25. }
  26. -(void)print
  27. {
  28. NSLog(@"div:%.2f",_x/_y);
  29. }
  30. @end

//异常的声明和定义部分

  1. // MyException.h
  2. // 异常的处理
  3. //
  4. // Created by ma c on 15/8/11.
  5. // Copyright (c) 2015年. All rights reserved.
  6. //
  7.  
  8. #import <Foundation/Foundation.h>
  9.  
  10. @interface MyException : NSException
  11.  
  12. @end
  13.  
  14. // MyException.m
  15. // 异常的处理
  16. //
  17. // Created by ma c on 15/8/11.
  18. // Copyright (c) 2015年 bjsxt. All rights reserved.
  19. //
  20.  
  21. #import "MyException.h"
  22.  
  23. @implementation MyException
  24.  
  25. @end

//主函数中对异常的测试和处理

  1. // main.m
  2. // 异常的处理
  3. //
  4. // Created by ma c on 15/8/11.
  5. // Copyright (c) 2015年. All rights reserved.
  6. //
  7.  
  8. #import <Foundation/Foundation.h>
  9. #import "DivTest.h"
  10. #import "MyException.h"
  11. int main(int argc, const char * argv[])
  12. {
  13. @autoreleasepool
  14. {
  15. DivTest *dt;
  16. @try
  17. { //检测除数为0的异常
  18. dt = [[DivTest alloc]initWithX: andY:];
  19. }
  20. @catch(MyException *e)
  21. { //捕捉除数为零的异常
  22. NSLog(@"MyException:%@",[e reason]);
  23. }
  24. @catch(NSException *e)
  25. { //捕捉其他的异常
  26. NSLog(@"Exception:%@",[e reason]);
  27. }
  28. @finally
  29. { //一定要执行的代码块
  30. [dt print];
  31. }
  32. }
  33. return ;
  34. }

Objective-C:除数为0的情况下异常的处理(检测、抛出、捕捉、处理)的更多相关文章

  1. Java中除数为0的情况

    转自http://blog.csdn.net/alanzyy/article/details/8591534 在数学中,规定被除数不能为0 那么在Java程序中一旦出现除数为0时,会出现什么情况呢: ...

  2. oracle 中可以用 case when then else end来处理除数是0的情况

    case when a.ZJXJE != 0 then to_char(round((a.YFZK-b.YFZK)/a.ZJXJE,2)) else '本期总进项金额为零' end then和else ...

  3. android EditText 默认情况下不获取焦点(不弹出输入框)

    可以在EditText前面放置一个看不到的LinearLayout,让它率先获取焦点: <LinearLayout android:focusable="true" andr ...

  4. Spring @Transactional注解在什么情况下会失效,为什么?

    出处:  https://www.cnblogs.com/hunrry/p/9183209.html   https://www.cnblogs.com/protected/p/6652188.htm ...

  5. @transactional注解在什么情况下会失效,为什么?

    一,特性: 1,一般在service里加@Transactional注解,不建议在接口上添加,加了此注解后此类会纳入spring事务管理中,每个业务方法执行时,都会开启一个事务,不过都是按照相同的管理 ...

  6. weblogic 下异常 org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken

    项目之前在 Tomcat 环境下一直都正常运行,今天应客户要求需要迁移到 webLogic 10.3.6 下, 部署后竟然抛出了 org.hibernate.QueryException: Class ...

  7. 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...

  8. 【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

    开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合 ...

  9. Mysql在高并发情况下,防止库存超卖而小于0的解决方案

    背景: 本人上次做申领campaign的PHP后台时,因为项目上线后某些时段同时申领的人过多,导致一些专柜的存货为负数(<0),还好并发量不是特别大,只存在于小部分专柜而且一般都是-1的状况,没 ...

随机推荐

  1. Dubbo的容错与负载均衡

    虽然前面在介绍dubbo中写过这块内容,但是不够充分,这里详细写一下,在以后研究中,还会继续补充程序原理. 一:容错 1.机制 在集群调用失败时,Dubbo 提供了多种容错方案,缺省为 failove ...

  2. 为mongodb数据库增加用户名密码权限

    加固mongodb建议:修改数据库默认端口,添加数据库访问权限: 启动数据库(裸奔):C:\mongodb\bin>mongod --dbpath C:\MongoDB\data(同时用--db ...

  3. 深度学习基础系列(十)| Global Average Pooling是否可以替代全连接层?

    Global Average Pooling(简称GAP,全局池化层)技术最早提出是在这篇论文(第3.2节)中,被认为是可以替代全连接层的一种新技术.在keras发布的经典模型中,可以看到不少模型甚至 ...

  4. 选择 React Native 的理由

    转载:选择 React Native 的理由 从开始知道 React Native 到现在已经过了5个月,真实的试用也经历了三个月的时间.阅读文档开始,了解是什么,到简单的理解为什么,都是在聆听不同的 ...

  5. Ubuntu 16.04 64位 tftp服务器搭建

    TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂.开销不大的文件传输服务 ...

  6. android 视频

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 第一套完整版: 第二套完整版: 第三套完整版: 第四套完整版: 第五套完整版: ==== ...

  7. session过期情况下ajax请求不会触发重新登录的问题

    在拦截器中添加以下逻辑 String requestType = request.getHeader("X-Requested-With"); if (!StringUtils.i ...

  8. BZOJ3207 花神的嘲讽计划

    hash值建主席树. 垃圾题面没有熟虑范围害我MLE——>RE. By:大奕哥 #include<bits/stdc++.h> #define unll unsigned long ...

  9. java后台接收json数据,报错com.alibaba.fastjson.JSONObject cannot be cast to xxx

    从前台接收json封装的list数据,在后台接收时一直报错,com.alibaba.fastjson.JSONObject cannot be cast to xxx, 使用这种方式接收可以接收 @R ...

  10. python开发_tkinter_小球完全弹性碰撞游戏_源码下载

    完成这个小球的完全弹性碰撞游戏灵感来自于: 下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏: 游戏初始化状态: 最下面的游标和修改小球的移动速度 ====================== ...