异常处理,

    异常的产生

          运行时异常:程序运行中产生的异常;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. 【转】Phong和Blinn-Phong光照模型

    来自:http://www.cnblogs.com/bluebean/p/5299358.html Phong和Blinn-Phong是计算镜面反射光的两种光照模型,两者仅仅有很小的不同之处. 1.P ...

  2. mysql在linux中安装问题和命令

    1. cd /  切换到 根目录. 2. cd /root 切换到根目录下的 root目录. 3. cd .. 切换到当前目录的上级目录. 4. rpm --qa mysql 查询已经安装mysql. ...

  3. 2021工厂增加2322仓位需求,参与FP分析

    在以下语句取消2322工厂即可 INSERT INTO STG.SAP_MARD(MATNR, WERKS, LGORT, LABST, UMLME, INSME, EINME, SPEME, LGO ...

  4. springmvc后台生成验证码

    url http://localhost:8080/admin/getCode http://localhost:8080/admin/checkCode controller package com ...

  5. httpclient4例子

    参考:http://hc.apache.org/httpclient-3.x/tutorial.html import org.apache.http.HttpEntity; import org.a ...

  6. struts2标签类别

    要在jsp中使用Struts2的标志,先要指明标志的引入.通过jsp的代码的顶部加入以下的代码: <%@taglib prefix="s" uri="/struts ...

  7. 85. Maximal Rectangle (Graph; Stack, DP)

    Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...

  8. Python中类的定义与使用

    目标: 1.类的定义 2.父类,子类定义,以及子类调用父类 3.类的组合使用 4.内置功能 1.类的定义 代码如下: #!/usr/bin/env python #coding:utf8 class ...

  9. iOS - OC - 字典快速遍历

    1. [dic enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop ...

  10. MyEclipse2018.9.0设置全局编码

    1.windows->Preferences打开"首选项"对话框,左侧导航,导航到general->Workspace 右侧Text file encoding,选择O ...