【JavaSE】异常-程序员宅基地

技术标签: java  

 

异常的概述

  什么是异常 程序运行中出现的不正常情况

数组越界  int[] a = new int[5];

              a[5];

 程序在运行的过程中,由于用户输入的数据格式有问题,读取文件,文件被强制删除了

,网络传输过程中,断网了就会导致程序出现不正常情况à 异常

注意:语法错误并非异常

Java中默认的异常处理机制:

 当程序出现异常后,会将异常包装在一个对应的对象中,并抛出此对象

并终止程序的运行

异常的处理:

遇到异常就终止程序运行(不想要的)
遇到程序异常时,进行处理
常见的异常:

数组索引越界异常  ArrayIndexOutOfBoundsException

字符串索引越界异常 StringIndexOutOfBoundsException

空指针异常  NullPointerException

类型转换异常 ClassCastException

算数运算异常 ArithmeticException

数字格式化异常  NumberFormatException

异常体系结构:

Java.lang.Throwable  是java异常体系中的根类

  里面有两个常用的方法:

    Public void printStackTrace();打印栈中的异常信息

    Public String getMessage(); 获取发生异常的原因

有两个子类:

  Java.lang.Error:  错误  是java程序无法处理的,例如内存不够用了

  Java.lang.Exception: 异常,这是本章要学习的,出现的一般性问题,

可以使用java中的异常处理机制进行处理的

Error  错误

outofMemoryError :java heap space  //内存不够用了,程序无法处理

StackOverflowError  栈溢出

广义异常:所有的问题 语法错误,error,exception

狭义异常:exception

异常处理

Java中提供了一套异常处理机制,在程序发生异常时,可以执行预先设定好的处理程序

执行完成后,程序会停止,可以继续向后执行。

在写代码的时候,就要根据不同的情况设定好处理程序,运行程序

如果程序执行时,出现问题,执行异常处理程序

如果程序执行时,没有出现问题,不需要执行异常处理程序

关键字

  try{   //写可能会出现异常的代码,需要长期积累

}

 Catch(异常类型 a){  //捕获指定类型的异常}

 Catch(ArithmeticExceprion a){  // 捕获出现的指定异常对象,如果类型不匹配,就捕获不到

  a.printStackTrace();

}

  Finally{  //必须要执行的代码块

}

package com.ffyc.javaexception;

import java.io.UnsupportedEncodingException;

public class Demo4 {

    public static void main(String[] args) {

        chu(10,0);

       //由于chu的方法,抛出的是一个运行时异常,所以在编译期间不会要求强制处理,需要程序员注意

        try {

            test();

            /*

            由于test()方法中抛出的是一个编译器异常,所以在编写代码期间,就强制要求进行处理

            处理办法有两种,1、try catch 捕获处理

                         2、继续throws 一般到了顶层的方法就不能再throws

             */

        } catch (UnsupportedEncodingException e) {

            e.printStackTrace();

        }

    }

    /*

      在方法声明的地方,通过throws关键字,声明此方法可能会抛出异常

      使用throws抛出异常对象,表示此方法不处理异常,交给调用这个方法的地方进行处理

      一般在底层的方法中,都不进行处理,抛出异常即可

     */

    public static int chu(int a,int b)throws ArithmeticException{

        int c = a/b;

        return c;

    }

    public static void test() throws UnsupportedEncodingException {

        "abc".getBytes("utf-8");

    }

}
1

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zundujia/article/details/137379375

智能推荐

湖南大学计算机专硕非全日制,非全日制研究生,到底“行不行”?-程序员宅基地

文章浏览阅读1.9k次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼虽然,对于非全日制研究生,今年国家五部门已通知:非全日制研究生在学历学位证书、就业等方面要与全日制平等,但仍有不少学生反映,一些企业在招聘问答环节中直接明确回复,“不招收非全日制研究生”,有的HR更是直接表明,全日制和非全日制研究生的区别大了去了,“非全日制=本科生”。“非全”研究生:仿佛读了个“假硕士”作为西北某大学2017级“非全”硕士研究生,小曹在..._湖南大学非全计算机

POJ 2987 最大权闭合图_最大权封闭图-程序员宅基地

文章浏览阅读3k次。请参考胡伯涛的论文《最小割模型在信息学竞赛中的应用》闭合图的概念就很好引出了。在一个图中,我们选取一些点构成集合,记为V,且集合中的出边(即集合中的点的向外连出的弧),所指向的终点(弧头)也在V中,则我们称V为闭合图。最大权闭合图即在所有闭合图中,集合中点的权值之和最大的V,我们称V为最大权闭合图。首先引入结论,最小割所产生的两个集合中,其源点S所在集合(除去S)为最大权闭_最大权封闭图

大道至简——RISC-V架构之魂(上)_rsiv-c架构-程序员宅基地

文章浏览阅读1w次。本文为《RISC-V CPU设计》专栏和《RISC-V嵌入式软件开发》专栏系列文章之一。注:本文节选自“硅农亚历山大”所著国内第一本系统介绍CPU与RISC-V设计的中文书籍《手把手教你设计CPU:RISC-V处理器篇》(预计将于2018年3~4月上市)。“大道至简——RISC-V架构之魂”——分成上中下三篇,本文是上篇。关注文末公众号后可查询上中下三篇的内容。注意:本文中将会多次出现“..._rsiv-c架构

超越RFC3550 - RTP/RTCP协议族分析_什么情况下使用rtp/avpf-程序员宅基地

文章浏览阅读651次。一 前言RF3550定义实时传输协议RTP和它的控制协议RTCP。RTP协议是Internet上针对流媒体传输的基础协议,该协议详细说明在互联网上传输音视频的标准数据包格式。RTP本身只保证实时数据的传输,并不能提供可靠传输、流量控制和拥塞控制等服务质量保证,这需要RTCP协议提供这些服务。RTCP协议负责流媒体的传输质量保证,提供流量控制和拥塞控制等服务。在RTP会话期间,各参与者周期性_什么情况下使用rtp/avpf

c++遇到无法打开PDB文件该怎么解决?_已加载“c:\windows\system32\ucrtbased.dll”。无法查找或打开 pdb-程序员宅基地

文章浏览阅读4.6k次,点赞7次,收藏7次。“Project2.exe”(Win32): 已加载“D:\c++\Project2\Debug\Project2.exe”。已加载符号。“Project2.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。“Project2.exe”(Win32): 已加载“C:\Windows\SysWOW64\kernel32.dll”。无法查找或打开 PDB 文件。“Project2.exe”(Win32): 已加载“C:\Windo_已加载“c:\windows\system32\ucrtbased.dll”。无法查找或打开 pdb 文件。

idea没有push按钮-程序员宅基地

文章浏览阅读3.1k次,点赞6次,收藏11次。intellij idea不显示git push按钮的解决办法_idea没有push按钮

随便推点

土木工程测量学复习知识点-程序员宅基地

文章浏览阅读273次,点赞3次,收藏9次。(3)我国的高程基准:称为“1985年国家高程基准”,即根据青岛验潮站1952年—1979年搜集的统计资料计算出的平均海水面作为高程零点,由此测得青岛水准原点高程为72.260米,称为1985年国家高程基准。c大地水准面所包围的球体可以代表整个地球形状d大地水准面是测量学的基准面,铅垂线是测量学的基准线。(1)工程控制网的建立(2)地形测绘(3)施工放样(4)设备安装(5)竣工测量(6)变形观测。(2)大地水准面:我们设想把平均静止的海水面向陆地延伸而形成的封闭曲面,称为大地水准面。

求分数序列前N项和_本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前n项之和。注意该序列从第2项-程序员宅基地

文章浏览阅读3.8k次,点赞13次,收藏23次。求分数序列前N项和分数 15作者 张彤彧单位 浙江大学本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前N项之和。注意该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,精确到小数点后两位。题目保证计算结果不超过双精度范围。输入样例:20输出样例:32.66代码长度限制16 KB时间限制400 ms内存限制64 MB_本题要求编写程序,计算序列 2/1+3/2+5/3+8/5+... 的前n项之和。注意该序列从第2项

《Python全栈开发:Python TCP/UDP》_tcp udp 开发python-程序员宅基地

文章浏览阅读1.8k次。一、基于TCP的套接字 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 tcp服务端 ss = socket() #创建服务器套接字ss.bind() #把地址绑定到套接字ss.listen() #监听链接inf_loop: #服务器无限循环 cs = ss.accept() #接受客户端链接 comm_loop: #通讯循环 cs.recv()/cs.send() #对话(接收与发_tcp udp 开发python

清除博科光纤交换机所有配置信息_brocade 光纤交换机恢复出厂设置-程序员宅基地

文章浏览阅读1.3k次。清除博科光纤交换机所有配置信息_brocade 光纤交换机恢复出厂设置

matlab 二进制补码转十进制,MATLAB浮点数与定点二进制补码互转算法验证方案-程序员宅基地

文章浏览阅读1k次。最近本人一直在学习ZYNQSOC的使用,目的是应对科研需要,做出通用的算法验证平台。大概思想是:ZYNQPS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更新硬件算法模块配置寄存器内容,同时可计算分析PL端算法实现性能指标。PL端的FPGA逻辑则负责算法的硬件实现,以探索高效并行硬件架构。为此本人后续会持续编写《利用ZYNQSOC快速打开算法验证通路》系列专..._matlab 补码转为十进制数

Megatron-LM:简单读读TransformerEngine(transformer_engine)-程序员宅基地

文章浏览阅读665次,点赞10次,收藏8次。得益于PyTorch灵活的外部扩展形式,只要不去触碰框架底层运行机制,仅仅在算子层面上的修改还是相当简单。这其实就是PyTorch的一个拓展,为了利用FP8的特性,针对Transformer里面的Kernel进行了重写,包含了一系列LayerNorm, GeLU, ScaledSoftmax等。具体到每一个算子实现动态范围调整的原理其实很简单,通过记录历史的abs max值,来去调整最终缩放的范围。在FP16下,其数据范围还是足够大的,因此在AMP下,_transformer_engine