JavaSE复习_7 异常
public static int f(int n){
try{
int r =n *n ;
return r ;
}
finally{
if(n ==2)
return 6;
}
}
该语句当n=2时,返回6。
△try finally语句中,finally语句中如果关闭抛出了异常,那么后抛出的异常将会把刚抛出的异常给覆盖
class XyyException extends Exception{
public XyyException(String s ){
super(s );
}
}
class HlhException extends Exception{
public HlhException(String s ){
super(s );
}
}
public class Demo {
public static void main(String[] args) throws XyyException, HlhException {
f();
}
public static void f() throws XyyException, HlhException {
int x =2;
try{
x= x*2;
throw new XyyException("try");
}
finally{
if(x ==4){
throw new HlhException("finally");
}
}
}
}
Exception in thread "main" string.Demo.HlhException: finally
at string.Demo.Demo.f( Demo.java:26)
at string.Demo.Demo.main( Demo.java:15)
public static int f(){
int x=10;
try{
System.out.println(12/0);
return x;
} catch(Exception e) {
x=20;
return x;
}
finally {
x=30;
if(x==30)
return x;
}
}
这个代码finally会将return30,因为finally中的return会将catch中的return覆盖,而如果没有return x,则该方法返回20,因为x仅仅赋值,但是返回的此时已经确定好了值.即在finally语句在return执行后返回前执行。
import java.util.*; public class FinallyTest6
{
public static void main(String[] args) {
System.out.println(getMap().get("KEY").toString());
} public static Map<String, String> getMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("KEY", "INIT"); try {
map.put("KEY", "TRY");
return map;
}
catch (Exception e) {
map.put("KEY", "CATCH");
}
finally {
map.put("KEY", "FINALLY");
map = null;
} return map;
}
}
这个代码运行结果是finally。因为在try中即返回了引用所指向的对象(即确定的是对象),随后对对象的操作都会改变返回值,但是在finally代码块的最后一句将引用指向空,对于对象不构成任何影响,原对象返回。
package io.project.one;
import java.util.logging.FileHandler;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger; public class Demo2 {
public static void main(String[] args) {
Logger logger=Logger. getLogger("io.project.one.Demo2");
logger.setLevel(Level. FINE);
try {
FileHandler fh= new FileHandler("MyLogger.txt" );
fh.setLevel(Level. FINE);
fh.setFormatter( new MyFormatter());
logger.addHandler( fh); logger.fine( "进入main函数" );
int x =2;
int y =3;
add(x,y);
logger.exiting( "io.project.one.Demo2", "main" );
} catch (Exception e ) {
e.printStackTrace();
}
} public static void add(int x, int y) {
Logger logger=Logger. getLogger("io.project.one.Demo2");
logger.fine( "io.project.one.Demo2");
System. out.println("x+y" );
logger.fine( "io.project.one.Demo2");
} }
class MyFormatter extends Formatter{ @Override
public String format(LogRecord record ) {
return "类别:" +record .getLevel()+"....信息:"+ record.getMessage();
}
}
JavaSE复习_7 异常的更多相关文章
- javaSE复习之——线程
线程其实就是程序执行的一条路径,一个进程中可以包含多条线程,多线程并发执行可以提高程序效率,可以同使完成多项任务 多线程的应用场景 迅雷多线程一起下载 服务器同时处理多个客户请求 多线程原理(单核CP ...
- JavaSE复习(三)异常与多线程
异常 分类 编译时期异常:checked异常. 在编译时期,就会检查,如果没有处理异常,则编译失败.(如日期格式化异常) 运行时期异常:runtime异常. 在运行时期,检查异常.在编译时期,运行异常 ...
- javaSE复习总结
之前匆匆忙忙学完了java,后来又接着学习ee,然而,越是想要快一点最后反而会更慢一点.因为匆忙间 我几乎什么都没学会.在后面的学习中实在非常吃力.就把javase 的视频大部分又重新看了一遍.真的收 ...
- JavaSE复习总结之集合(Collection)
Java早期版本只给集合类库提供了很少的一组类,但是随着Java版本的升级,Java集合类库越来越充实.集合类库里面存放的,是各式各样的数据容器,我们基本都学过数据结构这门课,数据结构所讲的就是ADT ...
- JavaSE复习日记 : 算是个小前言吧
/* * Java也学了好久了,抽个时间整理了一下课堂笔记,也有些是我刚开始学会犯的一些错误.在这里浅谈一下JavaSE的基础内容,对我来说也是一种不错的复习方式. * * 那好,对于初学者来说,学习 ...
- JavaSE复习巩固
第二天:复习if语句,扫描器,switch语句,循环语句 1.if语句---流程控制语句 if之前学的语句是顺序结构 1.1 单个if的语法结构 if(条件判断){ 满足条件需要做的事情: } int ...
- JavaSE复习_12 Socket网络编程
△客户端使用Scanner与BufferedReader的异同,Scanner在客户端调用s.shutdownoutput的时候,将会因为读不到行而报异常,但是BufferedReader的readl ...
- JavaSE复习_11 IO流复习
△FileReader是使用默认码表读取文件, 如果需要使用指定码表读取, 那么可以使用InputStreamReader(字节流,编码表) FileWriter是使用默认码表写出文件, 如果需 ...
- JavaSE复习_10 多线程复习
△wait()和sleep()的区别: 1.wait():没有等待时间,而sleep()需要有等待时间作为参数. 2.在同步中对于CPU的执行权和锁的处理不同: wait()会释放执行权和锁. ...
随机推荐
- IOS中两个view的切换
在ios中,rootview为PassWordViewController,secondview为SecondViewController,实现在rootview中听过一个跳转按钮实现跳转到secon ...
- Oracle truncate和delete的区别
首先truncate是DDL语句,而delete是DML语句. truncate的删除比delete快很多,尤其是表数据量大的时候,原因是truncate执行过程中不产生undo,所以truncate ...
- 从invoke简单理解反射
前言 程序集 : 程序集是.NET应用程序的基本单位,包含了程序的资源.类型元数据和MSIL代码.根据程序集生成方式的不同,可分为静态程序集和动态程序集.程序集又可分为单文件程序集和多文件程序集, ...
- hdu4924 Football Manager
这题上来我是没有思路的.因为目标值关涉到的因素太多而直接枚举的复杂度又太高. 目标值由两部分合成,一部分是队员的CA和与PA和,另一部分是队员之间的relationship. 前者是简单的代数累加,而 ...
- Who's in the Middle 分类: POJ 2015-06-12 19:45 11人阅读 评论(0) 收藏
Who's in the Middle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34155 Accepted: 1 ...
- DataRow数组转换DataTable
public DataTable ToDataTable(DataRow[] rows) { if (rows == null || rows.Length == 0) return null; Da ...
- 解决保存快照失败后redis无法写入的问题
用命令行工具连上后执行“set test 0”出现以下错误提示: MISCONF Redis is configured to save RDB snapshots, but is currently ...
- Mysql-学习笔记(==》插入修改数据二)
USE db; -- 建立学生信息表CREATE TABLE student( sno INT UNSIGNED NOT NULL AUTO_INCREMENT, sname VARCHAR(20) ...
- ios布局约束
http://blog.csdn.net/pucker/article/details/41843511 除了使用Pin菜单之外,也可以直接在文档结构窗口中或者设计器中通过拖拽建立约束.在文档结构窗口 ...
- JavaScript的循环语句
JavaScript的循环语句 1.JavaScript的循环语句 (1)for循环语句 - 循环代码块一定的次数: (2)for/in循环语句 - 循环遍历对象的属性: (3)while循环语句 - ...