JAVA实验报告九异常处理_Java课后练习9(异常处理)
动手动脑1:
import javax.swing.*;
class AboutException {
public static void main(String[] a)
{
int i=1, j=0, k;
k=i/j;
try
{
k = i/j; // Causes division-by-zero exception
//throw new Exception("Hello.Exception!");
}
catch ( ArithmeticException e)
{
System.out.println("被0除. "+ e.getMessage());
}
catch (Exception e)
{
if (e instanceof ArithmeticException)
System.out.println("被0除");
else
{
System.out.println(e.getMessage());
}
}
finally
{
JOptionPane.showConfirmDialog(null,"OK");
}
}
}
输出结果:
动手动脑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");
}
}
输出结果:
动手动脑3;
源代码:
public class EmbededFinally {
public static void main(String args[]) {
int result;
try {
System.out.println("in Level 1");
try {
System.out.println("in Level 2");
// result=100/0; //Level 2
try {
System.out.println("in Level 3");
result=100/0; //Level 3
}
catch (Exception e) {
System.out.println("Level 3:" + e.getClass().toString());
}
finally {
System.out.println("In Level 3 finally");
}
// result=100/0; //Level 2
}
catch (Exception e) {
System.out.println("Level 2:" + e.getClass().toString());
}
finally {
System.out.println("In Level 2 finally");
}
// result = 100 / 0; //level 1
}
catch (Exception e) {
System.out.println("Level 1:" + e.getClass().toString());
}
finally {
. System.out.println("In Level 1 finally");
}
}
}
输出结果:
动手动脑4:当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。
源代码:
public class SystemExitAndFinally {
public static void main(String[] args)
{
try{
System.out.println("in main");
throw new Exception("Exception is thrown in main");
//System.exit(0);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.exit(0);
}
finally
{
System.out.println("in finally");
}
}
}
输出结果:
动手动脑5:
finally语句块一定会执行吗?
至少有两种情况下finally语句是不会被执行的:
(1)try语句没有被执行到,如在try语句之前return就返回了,这样finally语句就不会执行。这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到。
(2)在try块|catch块中有System.exit(0);这样的语句。System.exit(0)是终止java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。
源代码:
// UsingExceptions.java
// Demonstrating the getMessage and printStackTrace
// methods inherited into all exception classes.
public class PrintExceptionStack {
public static void main( String args[] )
{
try {
method1();
}
catch ( Exception e ) {
System.err.println( e.getMessage() + "\n" );
e.printStackTrace();
}
}
public static void method1() throws Exception
{
method2();
}
public static void method2() throws Exception
{
method3();
}
public static void method3() throws Exception
{
throw new Exception( "Exception thrown in method3" );
}
}
输出截图:
动手动脑6:
如何跟踪异常的传播路径?
当程序中出现异常时,JVM会依据方法调用顺序依次查找有关的错误处理程序。
可使用printStackTrace 和 getMessage方法了解异常发生的情况: printStackTrace:打印方法调用堆栈。
每个Throwable类的对象都有一个getMessage方法,它返回一个字串,这个字串是在Exception构造函数中传入的,通常让这一字串包含特定异常的相关信息。
源代码:
import java.io.*;
public class ThrowMultiExceptionsDemo {
public static void main(String[] args)
{
try {
throwsTest();
}
catch(IOException e) {
System.out.println("捕捉异常");
}
}
private static void throwsTest() throws ArithmeticException,IOException {
System.out.println("这只是一个测试");
// 程序处理过程假设发生异常
throw new IOException();
//throw new ArithmeticException();
}
}
输出截图:
一个方法可以声明抛出多个异常
int g(float h) throws OneException,TwoException { …… }
这只是一个测试
捕捉异常
import java.io.*;
public class Test
{
public void test()throws IOException
{
FileInputStream fis = new FileInputStream("a.txt");
}
}
class Sub extends Test
{
//如果test方法声明抛出了比父类方法更大的异常,比如Exception
//则代码将无法编译……
public void test() throws FileNotFoundException
{
//...
}
}
一个子类的throws子句抛出的异常,不能是其基类同名方法抛出的异常对象的父类。
动手动脑7:
编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。
要求程序必须具备足够的健壮性,不管用户输入什 么样的内容,都不会崩溃。
源代码:
import javax.swing.JOptionPane;
public class Score {
public static void main(String[] args){
for(;;)
{
String a = JOptionPane.showInputDialog("请输入一个成绩:");
try{
int b = Integer.parseInt(a);
if(b>0&&b<60){
JOptionPane.showMessageDialog(null,
"不及格!");
break;
}
else if(b>=60&&b<=70)
{
JOptionPane.showMessageDialog(null,
"及格!");
break;
}
else if(b>70&&b<=80)
{
JOptionPane.showMessageDialog(null,
"成绩中等!");
break;
}
else if(b>80&&b<=90)
{
JOptionPane.showMessageDialog(null,
"成绩良好!");
break;
}
else if(b>90&&b<=100)
{
JOptionPane.showMessageDialog(null,
"成绩优秀!");
break;
}
else if(b>100||b<0)
{
JOptionPane.showMessageDialog(null,
"您输入的成绩超出范围,请重新输入!");
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null,
"您的输入有误,请重新输入!");
}
}
}
}
输出截图:
JAVA实验报告九异常处理_Java课后练习9(异常处理)相关推荐
- java实验报告可下载_JAVA实验报告.doc
JAVA实验报告.doc 学 生 实 验 报 告 册(理工类)课程名称面向对象程序设计 专业班级16计算机科学与技术(专转本) 学生学号 1613203022 学生姓名 张义丹 所属院部 计算机工程 ...
- JAVA实验报告九异常处理_JAVA实验报告_Java异常处理
贵州大学实验报告 学院:计信学院专业:网络工程班级:101 姓名学号实验组实验时间05.27 指导教师肖源源成绩 实验项目名称Java异常处理 实验目的1)掌握Java异常的概念及工作机制 2)掌握异 ...
- Java实验报告手写_java实验1实验报告(20135232王玥)
标签: 实验一 Java开发环境的熟悉 一.实验内容 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 二.实验要求 1.没有Linux基础的同 ...
- java实验报告共享单车_java毕业设计_共享单车监管系统
共享单车监管系统的设计与开发mysql数据库创建语句 共享单车监管系统的设计与开发oracle数据库创建语句 共享单车监管系统的设计与开发sqlserver数据库创建语句 共享单车监管系统的设计与开发 ...
- java实验报告 05 类与_java程序设计类与方法-java实验报告
java程序设计类与方法-java实验报告 java程序设计类与方法-java实验报告 1. 实验内容或题目 (1) 编写Java应用程序,实现以下功能:当应用程序运行后,根据屏幕提示进行交互式输入并 ...
- java 实验报告模板_Java实验报告模板.doc.doc
Java实验报告模板.doc 实 验 报 告 课程名称Java面向对象程序设计实验名称检查危险品姓名吴超益学号201424134114专业年级14物联网一.实验目的: 本实验的目的是让学生掌握try- ...
- java数组使用实验报告_JAVA数组与类的定义-java实验报告
JAVA数组与类的定义-java实验报告 JAVA数组与类的定义-java实验报告 .实验目的与要求 1. 熟悉Java类.对象和方法的一般操作练习等. 2. 熟悉数组等的定义和使用. 二.实验内容及 ...
- java实验册_Java实验报告册Java实验报告册.doc
Java实验报告册Java实验报告册 <面向对象程序设计> 实验报告与习题册2013 / 2014 学年 第1学期系 别 计算机科学与技术系专 业 班 级 姓 名 指导教师 目 录 项 目 ...
- java实验报告第8章_java实验报告8.doc
java实验报告8 实 验 报 告 课程名称JAVA程序设计实验名称 抽象类和抽象方法实验时间2015年 月 (系)计算机软件学院专 业计算机科学与技术实验名称抽象类和抽象方法指导教师周莉实验类型上机 ...
最新文章
- Linux那些事儿 之 戏说USB(27)设备的生命线(十)
- 聊聊linux查看服务和端口状态命令netstat
- Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)
- Oracle备份提示,EXP-00091: 正在导出有问题的统计信息。
- Laravel Collection 常用方法(1)
- 用友uclient客户端下载手机_影院6080手机版-影院6080手机客户端下载
- H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权
- 索引sql server_维护SQL Server索引
- edui 富文本编辑_改造百度UMeditor(UEditor-min)富文本编辑器的图片上传功能
- (day 52 - 递归 and 短路逻辑运算符的用法 ) 剑指 Offer 64. 求1+2+…+n
- Linux在日志中搜索关键词
- Swarm基于多主机容器网络-overlay networks 梳理
- 椭圆形中间一个大写的v_Shift键在 Word 中的 9 个经典操作,第一个你可能就不知道!【Word教程】...
- 阿里云解决方案汇总,24种上云场景,20O+篇企业上云实践
- R语言使用pROC包绘制ROC曲线并在ROC曲线上显示特异度和敏感度的置信区间(通过阴影区域以及线条显示)
- 个人邮箱地址格式,如何能够正确的书写?
- 三维马氏距离_马氏距离2
- 77. Combinations
- Latex编辑论文常用package
- python代码风格程序越复杂越高级_Python中代码风格的改变和相应的性能优化
热门文章
- 谷歌F12调试公众号时,让鼠标显示出来
- ipados 文件 连接服务器,iPadOS更新指南,总有一个功能是你需要的
- js ajax java传参_ajax参数传递与后台接收
- [转]常见的用户密码加密方式以及破解方法
- CSDN博客文章阅读模式插件(附源码)
- 地图投影系列介绍(三)----地图投影
- Android之网络请求提示Cleartext HTTP traffic to dev*******.com not permitted
- 剑指offer之把字符串里面空格替换成百分之20[时间复杂度是O(n)]
- 忍“乳”负重,身材好的女孩子究竟有多不容易?我从科学的角度算出来了……...
- 数学,原来可以这么美!