java学习笔记:里氏代换原则的两个例子
(根据里氏代换原则[能使用父类型的地方一定能使用子类型],抓取
ExampleA类型异常的catch块能够抓住try块中抛出的ExampleB类型的异常)
package com.study.javastudy; class ExampleA extends Exception{} class ExampleB extends ExampleA{ ExampleB(String s){} } public class TestExample { public static void main(String[] args) { try{ throw new ExampleB("b"); }catch(ExampleA e){ System.out.println("ExampleA"); }catch(Exception e){ System.out.println("Exception"); } } } /** * result: * ExampleA * (根据里氏代换原则[能使用父类型的地方一定能使用子类型],抓取ExampleA类型异常的catch块能够抓住try块中抛出的ExampleB类型的异常) */
----
package com.study.javastudy; class Annoyance extends Exception {} class Sneeze extends Annoyance {} public class Human { public static void main(String[] args) throws Exception { try { try { throw new Sneeze(); } catch ( Annoyance a ) { System.out.println("Caught Annoyance"); throw a; } } catch ( Sneeze s ) { System.out.println("Caught Sneeze"); return ; } finally { System.out.println("Hello World!"); } } } /* * result: Caught Annoyance Caught Sneeze Hello World! (根据里氏代换原则[能使用父类型的地方一定能使用子类型] * */