java动手动脑——异常处理

简介: Java07异常处理动手动脑异常处理的基本知识 Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。

                                          Java07异常处理动手动脑

  1. 异常处理的基本知识

 Java异常处理通过5个关键字try、catch、throw、throws、finally进行管理。基本过程是用try语句块包住要监视的语句,如果在try语句块内出现异常,则异常会被抛出,你的代码在catch语句块中可以捕获到这个异常并做处理;还有以部分系统生成的异常在Java运行时自动抛出。你也可以通过throws关键字在方法上声明该方法要抛出异常,然后在方法内部通过throw抛出异常对象。finally语句块会在方法执行return之前执行,一般结构如下:
 try{
  程序代码
 }catch(异常类型1 异常的变量名1){
  程序代码
 }catch(异常类型2 异常的变量名2){
  程序代码
 }finally{
  程序代码
 }

2. public class CatchWho {

    public static void main(String[] args) {

        try {

               try {

                   throw new ArrayIndexOutOfBoundsException();

               }

               catch(ArrayIndexOutOfBoundsException e) {

                   System.out.println(  "ArrayIndexOutOfBoundsException" +  "/内层try-catch");

               }

 

            throw new ArithmeticException();

        }

        catch(ArithmeticException e) {

            System.out.println("发生ArithmeticException");

        }

        catch(ArrayIndexOutOfBoundsException e) {

           System.out.println(  "ArrayIndexOutOfBoundsException" + "/外层try-catch");

        }

    }

}

运行结果:ArrayIndexOutOfBoundsException/内层try-catch

发生ArithmeticException

 

public class CatchWho2 {

    public static void main(String[] args) {

        try {

               try {

                   throw new ArrayIndexOutOfBoundsException();

               }

               catch(ArithmeticException e) {

                   System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch");

               }

            throw new ArithmeticException();

        }

        catch(ArithmeticException e) {

            System.out.println("发生ArithmeticException");

        }

        catch(ArrayIndexOutOfBoundsException e) {

            System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch");

        }

    }

}

运行结果:ArrayIndexOutOfBoundsException/外层try-catch

3. 阅读 EmbedFinally.java示例,再运行它,观察其输出并进行总结。

多个catch块时候,Java虚拟机会匹配其中一个异常类或其子类,就执行这个catch块,而不会再执行别的catch块。finally语句在任何情况下都必须执行的代码,这样可以保证一些在任何情况下都必须执行代码的可靠性。

4. finally语句块一定会执行吗?

并不一定,如果提前结束程序,finally语句就不会被执行,如程序中用System.exit(0);提前结束了程序。

 

 

5.编写一个程序,此程序在运行时要求用户输入一个   整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。

 

import java.util.*;

 

 

 

class AException extends Exception

 

{

 

String a;

 

AException() 

 

{

 

a="输入有误";  

 

}

 

public String toString()

 

{

 

return a;

 

}

 

}

 

 

 

public class A

 

{

 

    public static void main(String args[])

 

    {

 

     while(1>0)

 

       {

 

     Scanner sc = new Scanner(System.in);

 

     System.out.println("请输入考试成绩(0~100):");

 

     

 

        try

 

        {

 

            String s = sc.nextLine();    

 

            getnum(s);

 

        }

 

        catch (AException e)

 

        {

 

            System.out.println(e.toString());

 

        }

 

       }

 

    }

 

 

 

    private static void getnum(String s) throws AException

 

    {

 

     for (int i = s.length()-1; i >= 0;i--)

 

        {

 

         int chr = s.charAt(i);

 

            if (chr < 48 || chr > 57)

 

            {

 

             throw new AException();

 

            }

 

 

 

        } 

 

     double num = Double.parseDouble(s);  

 

        if (num < 0 || num> 100)

 

        {

 

            throw new AException();

 

        }

 

        if (num>= 0 && num<= 60)

 

        {

 

            System.out.print("不及格\n");

 

        }

 

        else if (num >= 60 && num <= 70)

 

        {

 

            System.out.print("及格\n");

 

        }

 

        else if (num>= 70 && num<= 80)

 

        {

 

            System.out.print("中\n");

 

        }

 

        else if (num >= 80 && num <= 90)

 

        {

 

            System.out.print("良\n");

 

        }

 

        else

 

        {

 

            System.out.print("优\n");

 

        }

 

    }

 

}

 

目录
相关文章
|
18小时前
|
存储 Java API
关于Java异常处理的9条原则
关于Java异常处理的9条原则
|
22小时前
|
Java 数据安全/隐私保护
java中异常处理机制
java中异常处理机制
8 1
|
1天前
|
IDE Java 测试技术
java异常处理及错误调试技巧
java异常处理及错误调试技巧
8 0
|
2天前
|
存储 Java 开发者
探索Java开发中触发空指针异常的场景
作为一名后端开发者在Java编程的世界中,想必大家对空指针并不陌生,空指针异常是一种常见而又令人头疼的问题,它可能会在我们最不经意的时候突然出现,给我们的代码带来困扰,甚至导致系统的不稳定性,而且最可怕的是有时候不能及时定位到它的具体位置。针对这个问题,我们需要深入了解触发空指针异常的代码场景,并寻找有效的方法来识别和处理这些异常情况,而且我觉得空指针异常是每个Java开发者都可能面临的挑战,但只要我们深入了解它的触发场景,并采取适当的预防和处理措施,我们就能够更好地应对这个问题。那么本文就来分享一下实际开发中一些常见的触发空指针异常的代码场景,并分享如何有效地识别和处理这些异常情况。
16 1
探索Java开发中触发空指针异常的场景
|
4天前
|
Java 数据库连接 开发者
Java中的异常处理机制详解
Java异常处理是确保程序健壮的关键,涉及Throwable的Error和Exception子类。Error由JVM抛出,不建议捕获;Exception分为检查异常(需要捕获)和未检查异常。处理异常的关键字有try、catch、finally、throw和throws。最佳实践包括捕获具体异常、不吞没异常、释放资源和避免滥用异常。示例展示了如何在main方法中处理IOException,并在finally块中进行资源清理。
|
4天前
|
SQL 网络协议 Java
Java异常详解
Java异常详解
8 1
|
8天前
|
Java
JAVA难点包括异常处理、多线程、泛型和反射,以及复杂的分布式系统知识
JAVA难点包括异常处理、多线程、泛型和反射,以及复杂的分布式系统知识。入坑JAVA因它的面向对象特性、平台无关性、强大的标准库和活跃的社区支持。
31 2
|
10天前
|
Java 开发者
Java中的异常处理:从基本概念到最佳实践
【4月更文挑战第30天】 在Java编程中,异常处理是确保程序健壮性和稳定性的关键机制。本文将深入探讨Java异常处理的基本概念,包括异常的分类、异常的抛出与捕获,以及如何有效地使用异常来增强代码的可读性和可维护性。此外,我们还将讨论一些关于异常处理的最佳实践,以帮助开发者避免常见的陷阱和误区。
|
10天前
|
XML Java 测试技术
Java异常处理神器:Guava Throwables类概念与实战
【4月更文挑战第29天】在Java开发中,异常处理是保证程序稳定性和可靠性的关键。Google的Guava库提供了一个强大的工具类Throwables,用于简化和增强异常处理。本篇博客将探讨Throwables类的核心功能及其在实战中的应用。
26 2
|
11天前
|
敏捷开发 机器学习/深度学习 Java
Java中的异常处理机制深入理解与实践:持续集成在软件测试中的应用探索自动化测试在敏捷开发中的关键作用
【4月更文挑战第29天】在Java编程中,异常处理是一个重要的概念。它允许开发者在程序执行过程中遇到错误或异常情况时,能够捕获并处理这些异常,从而保证程序的稳定运行。本文将详细介绍Java中的异常处理机制,包括异常的分类、异常的处理方式以及自定义异常等内容。 【4月更文挑战第29天】 随着敏捷开发和DevOps文化的兴起,持续集成(CI)已成为现代软件开发周期中不可或缺的一环。本文将探讨持续集成在软件测试领域内的关键作用、实施策略以及面临的挑战。通过对自动化构建、测试用例管理、及时反馈等核心要素的详细分析,揭示持续集成如何提高软件质量和加速交付过程。 【4月更文挑战第29天】 在当今快速发