异常处理,

    异常的产生

          运行时异常:程序运行中产生的异常;RuntimeException类。

          编译时异常:程序在编译时产生的异常;除了RuntimeException类  其他都是编译时产生的异常。

   处理异常两种方式

    抛出异常:把异常抛给调用者区解决   throws 抛出异常

    捕获异常:编程者自己处理try....catch...finally...

创建异常,

    1.自己创建sun公司的异常类对象

    

public class ClassException {
public static void main(String[] args) {
try {//如果出现异常 用来捕获异常
checkScore(110);
} catch (Exception e) {
e.printStackTrace();//输出 异常类型,异常原因,异常位置。 内部具有多线程
}
}
private static void checkScore(int i) throws RuntimeException {
if (i<0||i>100) {
throw new RuntimeException("不符合要求");//创建运行时异常对象
}
System.out.println("符合要求");
}
}

  

输出结果 :
java.lang.RuntimeException: 不符合要求
at day08.ClassException.checkScore(ClassException.java:28)
at day08.ClassException.main(ClassException.java:21)

  

    2.自定异常类继承sun公司的异常类(异常名字可以自定义)

  定义一个自定义类 (MyException)

public class NotToPrintException  extends Exception{//继承Exception类  调用父类构造输出异常信息
public NotToPrintException() {
super();
}
public NotToPrintException(String message) {
super(message);
}
}

  

public class ClassException {
public static void main(String[] args) {
try {
checkScore(110);
} catch (Exception e) {
e.printStackTrace();//输出异常类型,异常原因,异常位置 内部具有多线程
 } }
      //使用自定义异常类来抛出异常
private static void checkScore(int i) throws NotToPrintException {//使用自定义类捕获异常
if (i<0||i>100) {
throw new NotToPrintException("不符合要求");//抛出NotToPrintException对象
}
System.out.println("符合要求");
}
}

  

day08.NotToPrintException: 不符合要求
at day08.ClassException.checkScore(ClassException.java:29)
at day08.ClassException.main(ClassException.java:21)

  

finally,

    作用: 做为程序的善后的工作  

    执行顺序:try和catch之后  

  

public class FinallyTest {
public static void main(String[] args) {
FileWriter fw=null;
try {
fw=new FileWriter("a.txt");
fw.write("hello");
fw.write("world");
System.out.println(10/0);//报异常 但是fw还没有关闭 数据没有写进去
fw.write("java");
} catch (IOException e) {
e.printStackTrace();
} catch (ArithmeticException e) {
e.printStackTrace();
}finally{
try {
if (fw!=null) {
fw.close();//如果中途出现错误 但为了让数据已经写的数据存在文本中 则在finally中进行关闭流操作。
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}

  

a.txt文件中内容

helloworld

  

                 特殊案例:catch中存在return 和System.exit(0);

  

public class FinallyTest {
public static void main(String[] args) {
System.out.println(method1()); }
private static int method1(){
int a=10;
try{
System.out.println(10/0);
a=20;
}catch(Exception e){
a=30;
return a;//在执行finally之前会 return a时 这时a已经被赋值为30 再执行finally中a=40不会影响return a中的a值
      }finally{
a=40;
}
return a;
}
}
输出结果:
30

/*
* return a在程序执行到这一步的时候,这里不是return a而是return 30;这个返回路径就形成了。
* 但是呢,它发现后面还有finally,所以继续执行finally的内容,a=40
* 再次回到以前的返回路径,继续走return 30;
*/

    

public class FinallyTest {
public static void main(String[] args) {
System.out.println(method1()); }
private static int method1(){
int a=10;
try{
System.out.println(10/0);
a=20;
}catch(Exception e){
a=30;
System.out.println(a);
System.exit(0);//程序退出 不会执行finally
         }finally{
System.out.println(1);
a=40;
}
return a;
}

  

throws和throw的区别

  throws:

      位置:方法声明上

      作用:抛出异常  (处理异常的一种方式)

    throw:

      位置:方法中

      作用:创建一个异常对象 (制造异常)

public class ClassException {
public static void main(String[] args) {
try {
checkScore(110);
} catch (Exception e) {
e.printStackTrace();
}
checkScore(10);
}
private static void checkScore(int i) throws RuntimeException {//抛出异常 抛给调用者进行处理
if (i<0||i>100) {
throw new RuntimeException("不符合要求");//制造异常
}
System.out.println("符合要求");
}
}

  

     

day08(异常处理,创建异常,finally,throws和throw的区别)的更多相关文章

  1. JAVA基础学习之throws和throw的区别、Java中的四种权限、多线程的使用等(2)

    1.throws和throw的区别 throws使用在函数外,是编译时的异常,throw使用在函数内,是运行时的异常 使用方法 public int method(int[] arr) throws ...

  2. Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?

    先上代码再进行分析 public class Test { public static void main(String[] args) { try{ int i = 100 / 0; System. ...

  3. Java 语言如何进行异常处理,关键字:throws、throw、 try、catch、finally 分别如何使用?

    Java 通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口.在 Java 中,每个异常都是一个对象,它是 Throwable 类或其子类的实例.当一个方法出现异常后便抛出一 ...

  4. JAVA中的throws和throw的区别

    Java     一直对java中的throws和throw不太理解.最近一直在查这两个方面的资料,算是能明白一点吧.如果我下面的观点哪有不对,希望指出来,我加以改进.         throw:( ...

  5. Java中throws和throw的区别讲解

    当然,你需要明白异常在Java中式以一个对象来看待.并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示, ...

  6. Java异常throws与throw的区别

    throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以使用逗号隔开.当在主函数中调用该方法时,如果发生异常,就会将异常抛给指定异常对象.谁调用谁处理: 抛出异常throws: ...

  7. Java异常机制关键字总结,及throws 和 throw 的区别

    在Java的异常机制中,时常出现五个关键字:try , catch , throw , throws , finally. 下面将总结各个关键字的用法,以及throw和throws的区别: (1) t ...

  8. throws和throw的区别

    throws是声明在方法上,告诉调用者这个方法可能会出现的问题.格式  :   方法()   throws  自定义异常类(异常类)    就是在这个方法里面会出问题时,new  throw时,    ...

  9. java中的抛出异常throws与throw

    throws与throw throws是方法可能抛出异常的声明.(用在声明方法时,表示该方法可能要抛出异常)语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{.. ...

随机推荐

  1. python之commands模块

    要获得shell命令的输出只需要`cmd`命令就可以了, 需要得到命令执行的状态则需要判断$?的值, 在Python中有一个模块commands也很容易做到以上的效果.看一下三个函数:1). comm ...

  2. JQUERY框架的优点与面试题

    1 你觉得 jquery 有哪些好处?jQuery 是轻量级的 javascript 框架强大的选择器出色的 DOM 操作的封装可靠的事件处理机制完善的 ajax 封装出色的浏览器的兼容性支持链式操作 ...

  3. 【Linux】svn环境配置

    Ubuntu 安装svn环境配置 1. 安装 sudo apt-get install subversion 安装过程需要数据[Y] 2. svn位置选择 安装完成之后,选择svn目录位置, 将其放在 ...

  4. jquery 判断checkbox是否被选中问题

    1.jquery库2以上 $("#checkbox_check").click(function(){ alert($(this).prop("checked" ...

  5. 通过Chrome的inspect对手机webview进行调试

    使用chrome的inspect可以对手机上的webview进行调试,因为真机没有什么比较好的调试工具,而chrome提供了这一个工具可以比较方便的查看真机上的元素,以及进行调试. 其实我对webvi ...

  6. socket.io api 总结

    server 端const io = require('socket.io')(8000, { // path: '/socket', pingInterval: 10000, pingTimeout ...

  7. ASP.NET中的URL编码解码(转)

    在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗?测试: string file="文件上(传)篇.doc";string Server_UrlEncode=Server ...

  8. Dom对象总结介绍&事件介绍&增删查找标签

    1.dom有5个属性,属性内容如下 下面开始介绍Dom属性,一共有5个属性 1.document object:文档对象 2.element object:标签对象 3.test object:文本对 ...

  9. Silverlight实用窍门系列:57.Silverlight中的Binding使用(二)-数据验证

    本文将简单讲述Silverlight中的Binding数据时的数据验证. NotifyOnValidationError:是否在出现异常/错误信息的时候激发BindingValidationError ...

  10. 三、oracle 用户管理一

    三.oracle 用户管理一 一.创建用户概述:在oracle中要创建一个新的用户使用create user语句,一般是具有dba(数据库管理员)的权限才能使用.create user 用户名 ide ...