当前位置: 首页 > news >正文

Java 第八章 异常(1)

目录

异常概述

认识异常

异常处理机制

解决方法

异常体系结构

常见的异常

异常--运行时异常

算术异常

数组越界异常

类型转换异常

数字格式化异常

空指针异常

Error

问题实例



异常概述

认识异常

  • 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善 尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式读取文件是否存在网络出现问题等等。
  • 异常:在程序运行过程中出现的非正常情况

  • 广义异常:指的是所有不正常的情况
    狭义异常:指可以处理的异常

  • :代码错误,编译不通过,不属于异常(例如少写了结尾;),代码错了不会产生字节码 文件,根本不能运行

异常案例


异常处理机制

Java中把可能出现的每种异常情况,都封装成了一个类,当出现某种异常时,抛出此类型异常的对象
l不管,如果没有捕获这个异常对象,出现异常,直接中止程序
2.异常处理,接收抛出的对象,提供处理程序,让后面的程序可以继续运行。

解决方法

  •  一是遇到错误就终止程序的运行。
  •  另一种方法是程序员在编写程序时,就充分考虑到各种可能发生的异常和错误, 极力预防和避免。并且要编写相应的代码进行异常的检测、以及异常的处理方 式,保证代码的健壮性

异常体系结构

Throwable

java.lang.Throwable类是Java程序执行过程中发生的异常事件对应的类的根父类。

Throwable中的常用方法

  • public void printStackTrace():打印异常的详细信息。 包含了异常的类型、异常的原因、异常出现的位置、在开发和调试阶段都得使用printStackTrace。
  • public String getMessage():获取发生异常的原因

Throwable可分为两类:ErrorException

分别对应着java.lang.Errorjava.lang.Exception两个类。

Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、内存资源耗 尽等严重情况。一般不编写针对性的代码进行处理。

例如:StackOverflowError(栈内存溢出)。

Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,需要使用针对 性的代码进行处理,使程序继续运行


常见的异常

异常--运行时异常


算术异常

// 1.算数异常 ArithmeticException
//        int a = 10;
//        int b = 0;
//        System.out.println(a/b);

数组越界异常

//2.下标越界 ArrayIndexOutOfBoundsException
        int[] a1 = {1,2,3,4,5};
        a1[5]=6;
         

类型转换异常

  //类型转换异常 ClassCastException
        Object object ="abc";
        Integer a = (Integer) object;

       

数字格式化异常

  数字格式化异常
//        Exception in thread "main" java.lang.NumberFormatException: For input string: "a1"
//        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
//        at java.lang.Integer.parseInt(Integer.java:580)
//        at java.lang.Integer.parseInt(Integer.java:615)
//        at com.wyk.javaexception.Dom.main(Dom.java:25)


       String s ="a1" ;
       Integer.parseInt(s);

空指针异常

   /*
        使用了一个为null的对象   空指针异常
        NullPointerException
         */
        String s = null;
        s.length();

Error(错误)

栈溢出: StackOverflowErro

package com.wyk.javaexception;

public class Dom2 {
    public static void main(String[] args) {
     
        //Java.lang.StackOverError   栈内存空间异常递归调用的方法过多,导致栈空间不够用,是程序无法解决处理的
        sum(500000);
    }
    public static int sum (int num){
        if (num == 1) {
            return 1;
        }else
          return  num+sum(num-1);

   }
}

问题实例

1.

//看程序输出结果: 1 , 2
	 public static void main(String[] args) {
			try {
				int i=100/0;
				System.out.println(i);
			}catch(Exception e){
				System.out.println(1);
				throw new RuntimeException();
			}finally{
				System.out.println(2);
			}
			   System.out.println(3);
	}          
 

2.

//写出程序结果: B C D
	class Demo{
		public static void main(String[] args){
			try{
				showExce(); 
				System.out.println("A");
			}catch(Exception e){
				System.out.println("B");
			}finally{
				System.out.println("C");
			}
			System.out.println("D");
		}
		
		public static void showExce()throws Exception{
			throw new Exception();
		}
	}

3.

//写出程序结果:1134,  1134234
	class Test{ 
		public static String output="1";
		public static void foo(int i){ 
			try{ 
				if(1==i)
					throw new Exception(); 	
				output+="1"; 
			}catch(Exception e){ 
				output+="2"; 
			} finally{ 
				output+="3"; 
			} 
			output+="4"; 
		}
		
		public static void main(String args[]){ 
			foo(0); 
			System.out.println(output);// 
			foo(1); 
			System.out.println(output);// 
		}
	}            	
 

  

相关文章:

  • 详解TCP协议多种机制
  • java | MyBatis-plus映射和golang映射对比
  • 详解Nginx 配置
  • 将Neo4j用于Python学习的创新方法
  • 操作系统3.1
  • 自用题库---面试使用
  • 黑盒测试和白盒测试常用的测试方法有哪些?
  • 【科研绘图系列】R语言绘制小提琴图、散点图和韦恩图(violin scatter plot Venn)
  • C++:pthread线程分离和线程属性
  • 软件测试概念
  • 【VSCode】MicroPython环境配置
  • Java面试第六山!《MySQL基础知识点》
  • C语言基础11天:函数
  • Unity面板介绍_Project工程面板(23.1.1)
  • 解决OpenEuler系统修改句柄无效的问题
  • 《QT+PCL 第五章》点云特征-ESF
  • 基于Python/Java的医院系统切换互联网医院深度编程对接探索
  • 【个人总结】9. 通讯协议、物联网、DSP及FatFS文件系统 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)
  • 【大语言模型_4】源码编译vllm框架cpu版
  • Spring Data JPA 排序实战:基于 Sort 参数的实现
  • 网站建设 网址导航/制作网站教学
  • 饮料网站建设/湖南专业关键词优化
  • 上海宝山网站制作/外贸google推广
  • 36 氪 网站如何优化/精准客户软件
  • 做影视网站如何通过备案/大型网站建设公司
  • wordpress添加更新日期/网络优化行业的发展前景