异常处理的捕捉形式:

这是能够对异常进行针对性处理的方式



六、try、catch的理解



详细格式:

try
{
//须要被检測异常的代码
}
catch(异常类 变量)//改变量用于接受发生异常的对象
{
//处理异常的代码
}
finally
{
//一定会被运行的代码
}

这三个代码块是一个总体。

try是尝试,catch捕捉,finally终于化

 

什么时候用try&catch。什么时候用抛?

在定义功能时,假设这个问题你能够处理的了,那么就用try&&catch。处理不了那么就用抛

代码演示:

import java.util.*;
class FuException extends Exception
{
FuException()
{
}
FuException(String s)
{
super(s);//Exception有
//System.out.println(s);
}
}
class ExceptionDemo
{//要么捕捉,要么抛出
public int method(int[] arr,int index) throws FuException
{
if(index<0)
{
throw new FuException("The index is fushu");
}
return arr[index];
}
}
public class Main
{
public static void main(String[] args)//throws FuException
{
int[] a = new int[10];
ExceptionDemo C = new ExceptionDemo();
try
{
int num = C.method(a,-2);
System.out.print("num"+num);
}
catch (FuException e)
{
System.out.println("角标为负数啦!");
//e对象可用可不用,以下是一些经常使用的方法
System.out.println("Message:"+e.getMessage());
System.out.println("string:"+e.toString());//toString可省略
//打印异常信息
e.printStackTrace();//jvm默认的异常处理机制就是调用异常对象的这种方法 }
}
}

/*真正建立日志文件

*log four(java; ; )

*{

*

*}

*/其简写形式:log4j

七、多catch情况

假设在程序处理时。抛出了多个异常

import java.util.*;
class FuException extends Exception
{
FuException()
{
}
FuException(String s)
{
super(s);//Exception有
//System.out.println(s);
}
}
class ExceptionDemo
{
public int method(int[] arr,int index) throws FuException,NullPointerException
{
if(index<0)
{
throw new FuException("The index is fushu");
}
if (arr==null)
{
throw new NullPointerException("没有数组实体");//可自己定义
}
return arr[index];
}
}
public class Main
{
public static void main(String[] args)//throws FuException
{
int[] a = new int[10];
ExceptionDemo C = new ExceptionDemo();
try
{
int num = C.method(a,2);
System.out.print("num"+num);
}
catch (FuException e)
{
System.out.println("角标为负数啦!");
}
catch (NullPointerException e)
{
//e.printStackTrace();
System.out.println("Message:"+e.getMessage());
}
//多catch情况,假设有以下catch情况。不能房最上面。会接受全部对象
catch (Exception e)
{
//父类的catch房最以下,否则编译失败
//假设实在出现已有catch以外的情况,虚拟机会处理
}
}
}



八、异常的处理原则



try究竟什么时候用?

最根本的核心:仅仅要使用了声明异常的方法,就要try,仅仅要代码中有抛出异常的动作,假设能处理就用try。见到了异常就处理,没有异常就不须要处理。注意:没有错误。非要写try,不仅没意义。还存在弊端。假设真的要处理异常。可是不知道是什么异常,那么仅仅能写Exception。一旦未知异常真的发生了,可是却有个预先处理的方式
,处理什么不知道,这个异常被处理掉了,一旦处理掉了,就相当于异常被隐藏,可是程序还在正常运行。所以,仅仅要没说有问题,就不处理,仅仅要问题发生了。看到了。再考虑问题是否要处理

异常处理的原则:

1.函数内部假设抛出需要检測的异常。函数上必需要声明。否则必须在函数内部用try&&catch捕捉,否则编译失败

2.假设调用到了声明异常的函数,要么try&&catch,要么throws。否则编译失败

3.什么时候catch。什么时候throws?

功能内部能够解决,用catch

解决不了,用throws,由调用者解决

4.一个功能假设抛出了多个异常,那么调用时必须相应多个catch,进行针对性的处理

(内部有几个须要检測的异常,就要抛几个异常,抛几个。就catch几个)



九、finally代码块



/*finally的应用:

 * 用到finally最多的地方,比方数据库

 * 比如:打开百度。搜索

 * 连接数据库

 * 查询:假如Exception了,查询过程中出问题

 * 关闭连接

 *假设出现异常,不关闭连接,还在浪费数据库资源,所以不管是否出现异常,关闭连接一定要运行

 *进而释放资源,故关闭连接定义在finally里

 */

所以:凡是有资源须要关闭。一定要定义在finally里。



try。catch,finally代码块组合的方式:

1、try,catch,finally(三个都有常见)

2、try、catch,没有必要资源须要释放时,就不是必需定义finally

3、try、finally  异常无法直接catch处理,可是资源一定要关闭

void show()//throws Exception,不用声明。由于catch已经处理了
{
try
{ throw new Exception(); }
//有catch
catch
{ ..... }
}
 void show()throws Exception//没catch,就要声明
{
try
{ throw new Exception(); }
//没catch
finally //连接资源,出现异常,可是这个异常不一定就要处理,可是资源一定要关闭,由于在内部开辟的。别人不知道
{ .... }
}



最新文章

  1. Data对象
  2. Building GCC 4.1.2 in CentOS 7 for Maya API development
  3. struts2下s:iterator取不出值
  4. Masonry介绍与使用实践(快速上手Autolayout)
  5. ubuntu 12.04 LTS(64位)安装apache2
  6. hdu 1029
  7. javascript操作
  8. django 的mysql数据配置
  9. Node.js权威指南 (2) - Node.js中的交互式运行环境——REPL
  10. 一些硬件厂商的MAC号
  11. .Net MVC4 加.html后缀报404问题
  12. Android资源文件及文件夹介绍
  13. Drupal与大型网站架构(译)- Large-Scale Web Site Infrastructure and Drupal
  14. Android线程池使用终结版
  15. vue数组语法兼容问题
  16. isupper()函数
  17. 研华ADAM 4000系列型号枚举值
  18. Java数据结构和算法 - 二叉树
  19. Android进程命令查看
  20. 基于spring框架的jt项目分页查询知识点(一)

热门文章

  1. D. Frequent values
  2. Leetcode 365.水壶问题
  3. ubuntu ssh连接服务器保持长时间不断
  4. 【C#】重写和重载的区别
  5. 九度oj 题目1256:找出两个只出现了一次的数字
  6. python 列表 字符串 转换
  7. VS的一些错误解决方法记录
  8. springmvc接口接收json类型参数设置
  9. 小Z的袜子(bzoj 2038)
  10. msp430项目编程53