首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当Object类是所有对象的超类时,为什么我不能在Object类引用下捕获异常?

当Object类是所有对象的超类时,不能在Object类引用下捕获异常的原因是因为异常处理应该在可能引发异常的代码块中进行,而不是在异常被抛出后的处理阶段。在Java中,异常处理机制是基于方法调用栈的,当一个方法内部发生异常时,会将异常抛出到调用该方法的上层方法,直到找到合适的异常处理代码块进行处理。

Object类是所有类的根类,它没有定义任何可能引发异常的方法,因此在Object类引用下是不可能发生异常的。即使在Object类中定义了一个可能引发异常的方法,也应该在调用该方法的地方进行异常处理,而不是在Object类中进行捕获。

总结起来,异常处理应该在可能引发异常的代码块中进行,而不是在异常被抛出后的处理阶段。在Object类引用下捕获异常是不符合异常处理机制的规范的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【读码JDK】-java.lang包介绍

Java虚拟机检测到正在加载存在循环,抛出 ClassFormatError Java虚拟机尝试读取文件并格式化错误或者无法解析文件,抛出 ClassLoader 加载器一个负责加载对象...调用发不正确调用方法,抛出该异常 IllegalMonitorStateException 抛出此异常表示线程已尝试在对象监视器上等待,或者在没有指定监视器情况通知在对象监视器上等待其他线程...通常,编译器会捕获此错误; 如果类定义兼容地更改,则此错误只能在运行时发生。...基本数据类型包装都继承了该抽象方法 Object 所有所有对象包括数据实现了该类方法 虚假唤醒:https://blog.csdn.net/LuckyBug007/article/details...Void Void一个不可实例化占位符,用于保存对表示Java关键字void对象引用

1.5K20

Effective Java笔记(不含反序列化、并发、注解和枚举)

3.对于自己管理内存,最需要注意内存泄漏问题,因为垃圾回收器并不知道中那些对象是失效,这里需要程序员其告知垃圾回收器 4.缓存可能会内存泄漏: 1.外部没有缓存引用时候,某些情况这个缓存就可以当成没用了...4.可能一个对象被回收时候,终结方法根本就没执行过 5.可能在一个JVM中终结方法被执行了,但是另一个中却不会被执行 2.对于所有对象都通用方法 1.覆盖equals请遵守通用规定: 1.在覆盖...:对于每个不同值都要一个单独对象 3.复合优先于继承: 1.继承缺点: 1.一个进行了继承,或许当时可用,但是随着演化,某一刻其可能就不可用了 2.有些可继承方法,可能在自身实现时候进行了...6.总结一:PECS,extends善于提供精确对象,Super善于插入精确对象 5.方法: 1.必要进行保护性拷贝:在返回一个中可变组件时候,如果我们希望返回到客户端组件改变会影响到原来组件...2.丧失了编译检测好处 3.代码笨重 7.异常 1.只针对异常情况使用异常:不能使用异常控制代码正常流程,只能在出现意料之外情况使用异常 2.对可恢复情况使用受检异常对编程错误使用运行时异常

947110

Java核心技术第八章-泛型

所有的类型参数都用他们限定类型替换 为保持类型安全性,必要插入强制类型转换 桥方法被合成来保持多态(本文没有讲到,不过桥方法可以忽略,Java编写规范才会有桥方法生成) 约束与局限性...不能在静态域或方法中引用类型变量。...()对象作用域有效,而不是在作用域有效。...如果要使用泛型方法,可以参照文章上面的泛型方法哦~ 不能抛出或捕获泛型实例 即不能抛出也不能捕获泛型对象,甚至扩展Throwable都是不合法: public class Pair<String...文章到这里就结束啦,不知道各位小伙伴看懂了没,没看懂的话可能功底和文章写作能力还有待提高,小伙伴们也可以去看一《Java核心技术 卷一》这本书呢,感觉还是挺不错

88010

《Java核心技术 卷I:基础知识》读书笔记

5.2 Object所有 Object.equals(),判断一个对象是否等于另一个对象,即判断两者是否具有相同引用Object.toString(),返回表示对象字符串。...想要使用一个回调函数而又不想编写过多代码,可以使用匿名内部类。 C++使用嵌套。嵌套之间关系而并不是对象之间关系。对于一个嵌套,可能并不会实现嵌套内。...该功能只在编译无法确定需要实现哪个接口才使用。 不太感兴趣,直接跳过。 第11章 异常、断言、日志和调试 11.1 处理错误 异常分类:所有异常都是由Throwable继承而来。...习惯上,该类要包含两个构造器,一个默认构造器;另一个带有详细描述信息构造器(toString()方法会打印出这些详细信息) 11.2 捕获异常 使用 try{ //code }catch...>,返回值一般只能赋予Object Pair与Pair不同在于,前者可以用任意Object对象调用原始Pair指定方法 12.9 反射和泛型 12.8.3 通配符捕获 第13章 集合 说实话,这部分建议红书

57820

Java基础入门笔记05——面向对象,创建对象内存分析,继承,封装,多态,object,this&&super,方法重写,引用类型强制转换,instanceof,抽象,内部类,接口,异常。[通

大家好,又见面了,你们朋友全栈君。...object来自于java.lang(String也是这个包里) ---- super关键字 ——-指代父或父对象 notes: 属性或方法被private修饰,不能被继承... super和this不能同时调用 super&&this super代表父对象引用,this代表本身这个对象 this在没有继承也能使用,super只有在继承条件才能使用(在子类中使用) this...>private 重写可能会抛出异常:重写异常范围可以缩小,不能扩大 重写,子类方法名和父必须要一致,方法体不同 为什么需要重写?...() ---- 关键字throw——主动抛出异常,在方法中使用,可以在方法中进行捕获 关键字throws——如果该方法处理不了这个异常,就只能在该方法上,往外抛异常(抛给调用方法地方)

97920

Core Java 52 问(含答案)

GC 工作,无法当前内存是否足够,都会回收掉只被弱引用关联对象。在 JDK 1.2 之后,提供了 WeakReference 来实现弱引用。...为一个对象设置虚引用关联唯一目的就是能在这个对象被 GC 回收收到一个系统通知。在 JDK 1.2 之后,提供了 PhantomReference 来实现虚引用。 并发 30....在 Java 中,所有异常都是 Throwable 或者其子类实例。Throwable 有两大直接子类。一个 Error,涵盖程序不应捕获异常。... Error 发生,它执行状态已经无法恢复,需要终止线程甚至虚拟机。第二个子类 Exception,涵盖程序可能需要捕获并且处理异常。...在 Java 语法中,所有的检查异常都需要程序显式地捕获,或者在方法声明中用 throws 关键字标注。通常情况,程序中自定义异常应为检查异常,以便最大化利用 Java 编译器编译检查。

34820

Java从入门到精通十(java异常)

那些可能在 Java 虚拟机正常运行期间抛出异常。...2:ArrayStoreException(数组存储异常) 一般存储类型匹配 java api对此错误说明就是 试图将错误类型对象存储到一个对象数组抛出异常。...5:ClassCastException(转换异常) 这个问题会经常遇到,对象转换时候经常会出现这个问题 试图将对象强制转换为不是实例子类,抛出该异常。...<1: 非运行时异常常见异常说明 :IOException 发生某种 I/O 异常,抛出此异常。此类失败或中断 I/O 操作生成异常通用。...这个属于编译异常。 当然并不是说,只能进行捕获编译异常,运行时异常照样可以进行提前预知捕获。 空指针异常就是一个运行时异常,但是编译时候不会检查。一般这个原因就是对象引用出现问题。

1.3K40

Java泛型总结

严格来讲,该表达式意味着:`T subtypeOf Comparable`,jdk希望再引入一个新关键词; 其次,T既可以是对象也可以是接口,如果对象应该是`implements`,而如果接口...如果引用了第二个限定符对象,编译器会在必要时候进行强制类型转换。...也就是说可以消除已检查异常,有点地道,颠覆了java异常处理认知,后果不可预料,慎用。...通配符类型 通配符在泛型使用时一种机制,不能用在泛型定义泛型表达式中(这是泛型类型参数限定符)。 子类型通配符 如果PS,那么 Pair就是Pair<?...但是由于Java所有对象顶级祖先都是Object,因此可以用Object获取getName返回值。 无限定通配符 Pair 就是 Pair<?

98720

Java_后端面试题

finalize一个方法,属于Object一个方法,该方法一般由垃圾回收器来调用,当我们调用 System.gc() 方法时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收最后判断...,无需从繁忙真实来源查询数据,提升速度;内存不足,自动删除这部分缓存数据,从真正来源查询这些数据。...弱引用 第二次垃圾回收回收 弱引用是在第二次垃圾回收回收,短时间内通过弱引用取对应数据,可以取到,执行过第二次垃圾回收,将返回null。...虚引用 垃圾回收回收,无法通过引用取到对象值 虚引用是每次垃圾回收时候都会被回收,通过虚引用get方法永远获取到数据为null,因此也被成为幽灵引用。...4、 sleep 必须捕获异常,而 wait , notify 和 notifyAll 不需要捕获异常

38220

Java关键字和保留字

引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向对象内容可变。 4、final参数 函数参数为final类型,你可以读取使用该参数,但是无法改变该参数值或者引用指向。...尤其关键一个线程访问object一个synchronized(this)同步代码块,其他线程对object所有其它synchronized(this)同步代码块访问将被阻塞。...也就是说,一个线程访问object一个synchronized(this)同步代码块,它就获得了这个object对象锁。结果,其它线程对该object对象所有同步代码部分访问都被暂时阻塞。...7、变量引用 1) super 父, super 关键字用于引用使用该关键字。 作为独立语句出现 super 表示调用构造方法。 super.() 表示调用方法。...引用可能不明确,可以使用 this 关键字来引用当前实例。 3) void 无返回值 void 关键字表示 null 类型。 void 可以用作方法返回类型,以指示该方法返回值。

94530

知识点总结:Java核心技术(卷1)

大家好,又见面了,你们朋友全栈君。...如果将一个标记为strictfp,那么这个所有方法都要使用严格浮点计算。 严格浮点计算:所有的中间计算必须进行截断。 默认情况采用严格浮点计算。...x->new int[x] 2.4 内部类 为什么使用内部类: 内部类方法可以访问该类定义所有的作用域中数据,包括私有的数据; 内部类可以对同一个包中其他隐藏起来 想要定义一个回调函数且不想编写大量代码...捕获多个异常异常变量隐含为final变量,不能再子句体中为e赋不同值。...setDaemon(boolean isDaemon),标记为守护线程,该方法必须在线程启动之前调用 未捕获异常处理器 线程发生异常终止时候,异常会被传递到一个用于未捕获异常处理器。

33230

《Effective Java》——读后总结

显示取消监听器和回调,或进行弱引用。对于所有对象都通用方法 5、覆盖 equals 如果类具有自己特有的"逻辑相等",但还没有覆盖 equals 以实现期望行为。...不要将 equals 声明 object 对象替换为其他类型,因为这样没法覆盖 Object.equals,只是提供了一个重载。...7、总是覆盖 toString Object 提供 toString,实现是名+@+散列码无符号十六进制。 自己覆盖 toString,返回对象中包含所有值得关注信息。...若在后续发行版本中获得新方法,并且其子类覆盖中与新方法有关方法,则可能会发生错误。 复合:在新中增加一个私有域,引用现有。它不依赖现有实现细节,对现有进行转发。...12、接口只用于定义类型 实现接口,接口充当可以引用这个实例类型,为了任何其他目的而定义接口恰当。 常量接口对接口不良使用。

1.5K10

Java 最常见 208 道面试题:第七模块答案

异常 74. throw 和 throws 区别? throws用来声明一个方法可能抛出所有异常信息,throws异常声明但是处理,而是将异常往上传,谁调用就交给谁处理。...finalize一个方法,属于Object一个方法,而Object所有,该方法一般由垃圾回收器来调用,当我们调用Systemgc()方法时候,由垃圾回收器调用finalize(),...常见异常有哪些? NullPointerException:当应用程序试图访问空对象,则抛出该异常。 SQLException:提供关于数据库访问错误或其他错误信息异常。...此类失败或中断I/O操作生成异常通用。 ClassCastException:试图将对象强制转换为不是实例子类,抛出该异常。...RuntimeExceptionRuntimeException:那些可能在Java虚拟机正常运行期间抛出异常。 (完)

65020

常见Java基础面试题目分享二

比如某个方法需要传入object参数,但实际传入数字,如果没有自动拆、装箱就需要特殊处理 Java异常处理机制 Java异常机制可以分为异常处理,异常抛出,异常跟踪栈问题。...处理异常语句try、catch、finally三部分组成。try块用于包裹业务代码,catch用来捕获某个异常并处理,finally一般用来关闭资源。...抛出异常可以用throws与throw,throws只能在方法签名中使用,可以抛出多个异常,throw可以单独使用,但是每次抛出一个对应实例对象。...泛型擦除:Java伪泛型,因为Java代码在编译阶段,所有生成字节码文件中包含泛型信息 为什么要使用多线程 优点 提高响应程序: 耗时操作使用另一个线程 提高CPU利用率 提高程序运行效率...所属不同:waitObject,sleepThread 对锁依赖不同:wait依赖于synchronized锁,它必须通过监视器进行调用,在调用后会释放锁,而sleep不会 返回条件不同

34310

java面试题汇总-基础篇

哈哈~ 以下根据面试经验总结一些常见关于java基础面试题目。做了一总结,方便以后自己复习。 有需要同学也可以收藏,后面遇到新面试题目会不断更新上去。...什么浅克隆,什么深克隆? 浅克隆指拷贝对象仅仅拷贝对象本身(包括对象基本变量),而拷贝对象包含引用指向对象。 深克隆不仅拷贝对象本身,而且拷贝对象包含引用指向所有对象。...通过ObjectgetClass()方法,想要用这种方法必须要明确具体并且创建该类对象所有数据类型都具备一个静态属性.class来获取对应Class对象。...(为什么初始值2n次方,为什么负载因子取0.75,这两个问题可以网上找资料看看,这里就不详述了) 简述一HashMap扩容机制?...Future调用get()方法,可以捕获处理异常

78610

JAVA回忆录之泛型篇

另一方面,因为我们知道,不论它是什么类型,它总是类型T子类型,当我们在读取数据,能确保得到数据一个T类型实例: Fruit get = fruits.get(0); 有界通配符(下界) 向下造型一个泛型对象引用...Apple,编译器就会警告你: fruits.add(new Fruit()); fruits.add(new Object()); 因为我们不知道它是怎样所有这样实例就不允许加入。...从这种形式类型里获取数据又是怎么样呢?结果表明,你只能取出Object实例:因为我们不知道究竟是什么,编译器唯一能保证只是它是个Object,因为Object任何Java类型。...(Object)类型,但不同于原始类型Long对象,在编译能够通过,而在运行时会抛出ArrayStoreException异常。...假设现在内存中存在着一个People对象和People对象,而静态变量与静态方法所有实例共享

51230

效率编程 之「创建和销毁对象

在这种模式直接生成想要对象,而是让客户端利用所有必要参数调用构造器(或者静态工厂),得到一个builder对象;然后客户端在builder对象上调用类似setter方法,来设置每个相关可选参数...所有的构造器都必须显式或隐式地调用构造器,在这种情况,子类就没有可访问构造器可调用了。...正常情况,未被捕获异常将会是线程终止,并打印出栈轨迹,但是,如果异常发生在终结方法之中,则不会如此,甚至连警告都不会打印出来。...这意味着,在终结方法执行过程中,未被捕获异常会使对象处于破坏状态,如果另一个线程企图使用这种被破坏对象,则可能发生任何不确定行为。而且,使用终结方法有一个非常严重性能损失。...守护者被终结时候,它执行外围实例所期望终结行为,就好像它终结方法外围对象一个方法一样。 总之,除非作为安全网,或者是为了终止非关键本地资源,否则请不要使用终结方法。

51130

带着问题高效学Android:关于Java与Kotlin泛型你应该知道知识点

在如上编码过程中,我们发现主要存在两个问题: 1.当我们将一个对象放入集合中,集合不会记住此对象类型,再次从集合中取出此对象,改对象编译类型变成了Object类型,但其运行时类型任然为其本身类型...泛型本质是为了参数化类型(在创建新类型情况,通过泛型指定不同类型来控制形参具体限制类型)。...5.不能实例化类型变量 6.不能捕获泛型实例 不能在静态域或方法中引用类型变量。...泛型思想早在C++语言模板(Template)中就开始生根发芽,在Java语言处于还没有出现泛型版本,只能通过Object所有类型和类型强制转换两个特点配合来实现类型泛化。...,由于Java语言里面所有的类型都继承于java.lang.Object,所以Object转型成任何对象都是有可能

1.1K00

Java 经典问题

,所以其内存锁针对相同对象互斥操作,而static成员属于专有,其内存空间为该类所有成员共有,这就导致synchronized()对static成员加锁,相当于对加锁,也就是在该类所有成员间实现互斥...结构图 Throwable Throwable Java 语言中所有错误或异常。 Throwable包含两个子类: Error 和 Exception 。它们通常用于指示发生了异常情况。...RuntimeException RuntimeException那些可能在 Java 虚拟机正常运行期间抛出异常。 编译器不会检查RuntimeException异常。...例如,除数为零,抛出ArithmeticException异常。RuntimeExceptionArithmeticException。...,但是这个办法很脆弱,因为这种办法要求对应类型必须有默认构造函数,遇到Integer类型时候就失败了,而且这个错误还不能在编译器捕获

56631
领券