Thursday, 23 June 2016

Java Tutorial : Java Exception handling (final vs finally vs finalize)


Click here to watch in Youtube :
https://www.youtube.com/watch?v=9JDbBNs6dhc&list=UUhwKlOVR041tngjerWxVccw

Click the below Image to Enlarge
Java Tutorial : Java Exception handling (final vs finally vs finalize) 
FinalDemo1.java
public class FinalDemo1
{
    public static void main(String[] args)
    {
        /*
         * If the final keyword is attached to a variable
         * then the variable becomes constant i.e. its value
         * cannot be changed in the program.
         */
        final int intValue = 1000;
        intValue = 500;// Compile Time Error
    }

}
Output
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    The final local variable intValue cannot be assigned. It must be blank and not using a compound assignment

    at FinalDemo1.main(FinalDemo1.java:11)
FinalDemo2.java
class SuperClass
{
    final void methodOfSuperClass()
    {
        System.out.println("final Method");
    }
}
 
class SubClass extends SuperClass
{
    void methodOfSuperClass()
    {
        //Compile time error, final method can not be overridden.
    }
}

public class FinalDemo2
{
    public static void main(String[] args)
    {
        SuperClass superClass = new SubClass();
        superClass.methodOfSuperClass();
    }

}
Output
Exception in thread "main" java.lang.VerifyError: class SubClass overrides final method methodOfSuperClass.()V
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
    at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
    at java.lang.Class.getMethod0(Class.java:3018)
    at java.lang.Class.getMethod(Class.java:1784)
    at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
FinalDemo3.java
/*
 * If a class is marked as final then this class 
 * cannot be inherited by any other class.
 */

final class SuperClass1
{
    void methodOfSuperClass()
    {
        System.out.println("final class");
    }
}

class SubClass1 extends SuperClass1
{
    
}

public class FinalDemo3
{
    public static void main(String[] args)
    {
        SuperClass1 superClass1 = new SubClass1();
        superClass1.methodOfSuperClass();
    }

}
Output
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Type mismatch: cannot convert from SubClass1 to SuperClass1

    at FinalDemo3.main(FinalDemo3.java:23)
FinalizeDemo.java
public class FinalizeDemo
{

    private String name = null;

    public FinalizeDemo(String name)
    {
        super();
        this.name = name;
    }

    public static void main(String[] args)
            throws InterruptedException
    {
        FinalizeDemo FinalizeDemo1 = new FinalizeDemo("FinalizeDemo1");
        FinalizeDemo1 = null;
        FinalizeDemo FinalizeDemo2 = new FinalizeDemo("FinalizeDemo2");
        FinalizeDemo1 = null;
        FinalizeDemo2 = null;
        System.gc();
        Thread.sleep(100);
    }

    public void finalize()
    {
        System.out.println(this.name
                + " Object finalize method is called");
    }

}
Output
FinalizeDemo2 Object finalize method is called
FinalizeDemo1 Object finalize method is called
FinallyDemo.java
public class FinallyDemo
{

    public static void main(String[] args)
    {
        try
        {
            String str = "Peter";
            System.out.println("str = "+str);
        }
        catch (Exception exe)
        {
            exe.printStackTrace();
        }
        finally
        {
            System.out.println("finally block is executed");
        }
    }

}
Output
str = Peter
finally block is executed
Click the below link to download the code:
https://sites.google.com/site/javaee4321/java/ExceptionDemo_final_finally_finalize_App.zip?attredirects=0&d=1

Github Link:
https://github.com/ramram43210/Java/tree/master/BasicJava/ExceptionDemo_final_finally_finalize_App

Bitbucket Link:
https://bitbucket.org/ramram43210/java/src/969ffd88eb34c4fd42d966118b27490392b78865/BasicJava/ExceptionDemo_final_finally_finalize_App/?at=master

See also:
  • All JavaEE Viedos Playlist
  • All JavaEE Viedos
  • All JAVA EE Links
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • No comments:

    Post a Comment

    Google+ Followers

    Google+ Badge