Try blocks in overloaded constructors.

I'm currently working on a program for my Data Structures class that will randomly generate lottery tickets for the user. I've designed a class to represent the tickets so that I can manipulate the data and such. I have one main constructor with 6 parameters and a few other overloaded constructors to provide default values when less than 6 arguments are provided in the call.
Here's my problem: I think it would be cool to design a constructor that takes an int array as it's parameter with all the data contained in the array already. This seems like a great place to experiment with the try blocks so I can test that the array has enough values before the values are accessed. My current implementation of the try block conflicts with the semantics of using the "this" keyword in overloaded constructors: "this" must come first in the constructor. I'm not sure what to do, and since it's the first time I've ever even attempted to use try blocks, I don't have a clue what to ask...
I have this ----------------------------------------->
{noformat}{noformat}{noformat}public Ticket( int cap1, int low1, int high1, int cap2, int low2, int high2) {{noformat}{noformat} // Some initializations and method calls here{noformat}{noformat}}{noformat}{noformat}public Ticket( int ticketParams[] ) {{noformat}{noformat} try {{noformat}{noformat} this (ticketParams[0], ticketParams[1], ticketParams[2],{noformat}{noformat} ticketParams[3], ticketParams[4], ticketParams[5] );{noformat}{noformat} } catch(ArrayIndexOutOfBoundsException err) {{noformat}{noformat} System.out.println("Array argument does not contain enough data.");{noformat}{noformat} }{noformat}{noformat}}{noformat}
------------------------------------------------------------^
Should I be trying to do this another way, or is this not possible -- or even sensible?

Assert them on the caller side, not on the callee i.e. the consturctor.
Anyway a try/catch for an ArrayIndexOutOfBoundsException is useless because the exception would throw a message similar to yours and it is fatal for the program run continuation.

Similar Messages

  • Overloading constructor of a child that inherits from a class that inherits from Windows.Forms

    The title might be a bit confusing so here is the layout.
    - classHForm inherits System.Windows.Forms.Form
    - frmDoStuff inherits classHForm  (written by someone else and used in several applications)
      - does not have a constructor specifically defined, so I added the following thinking it would override the parent
    Sub Public New()
    End Sub
    Sub Public New(byval data as string)
    'do stuff
    End Sub
    In my code, I want to instantiate frmDoStuff, but I need to overload it's constructor and populate fields within this form. The problem I'm running into is that when I run this, it is using the constructor from classHForm and ignores any constructor in frmDoStuff.
    I guess you can't override the parent constructor? Is that why it won't work?
    I didn't want to overload the classHForm constructor, but I will if that's the way to go.
    my code:
    dim frm as new frmDoStuff(myString)
    Note: I would love to show actual code, but not allowed. Against company rules.

    Your code is similar. The value I pass into frmDoStuff is supposed to set a value for a textfield.
    Public Class frmDoStuff
    Inherits classHForm
    Public Sub New(ByVal s As String, ByVal gridData() as String)
    txtMyTextField.text = s LoadGrid(gridData)
    End Sub
    I also have a datagridview I need to populate in frmDoStuff and thought I would have another string or string array as a second parameter to the constructor and then call a routine from the constructor to populate the datagrid.
    of course, when I run it this way, the code is not being reached. I'll build an example as COR suggested and maybe someone will see where I'm going wrong.
    [UPDATE]
    I created a simple example and it worked. So, now I need to try to understand what is different in the actual code.
    Here is my example:
    Parent Class inherits form
    Imports System.Windows.Forms
    Public Class classMyForm
    Inherits System.Windows.Forms.Form
    Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    End Sub
    End Class
    Public Class frmDoStuff
    Inherits classMyForm
    Public Sub New()
    ' This call is required by the designer.
    InitializeComponent()
    ' Add any initialization after the InitializeComponent() call.
    End Sub
    Public Sub New(ByVal sStuff As String)
    MyBase.New()
    InitializeComponent()
    'Populate the textbox
    TextBox1.Text = sStuff
    End Sub
    End Class
    Public Class frmMyForm
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim frm As New frmDoStuff(TextBox1.Text)
    frm.Show()
    End Sub
    End Class
    Just to recap. The actual parent was created a few years ago and the child form that I'm calling, "frmDoStuff" was created a couple years back and is used in several applications. I need to use it in my application, but I need to populate a couple
    controls when the form is loaded. As you can see in this example, I successfully overloaded the constructor to populate the textbox in frmDoStuff.
    In my real life situation, my overloaded constructor seems to be getting ignored when i step through the code. I'll go back and do some more testing.

  • OracleDataReader in a C# try-block ??

    There appears to be a chicken-hen problem with the OracleDataReader in a try-block in C#:
    Code like this:
    try
    OracleDataReader OraRdr = oraCmdAny1.ExecuteReader();
    OraRdr.Read();
    results in an CS0246 error saying the name OraRdr does not exist - and the C# documentation on the try-block explicitly warns about initalizing a variable inside a try-block.
    But how to resolve this as no constructor except the one above is available for the OracleDataReader ???
    Any thoughts?
    Michael

    Hi Michael,
    How about something like this?
    OracleDataReader OraRdr = null;
    try
      OraRdr = oraCmdAny1.ExecuteReader();
    catch (OracleException ex)
      OraRdr = null;
    if (OraRdr != null)
      OraRdr.Read();
    }Would that work for what you want to do?
    - Mark

  • Final variables and try blocks

    If you tried to initialize a final variable within a try block, you would get a compile-time error.
    Here's an example class:
    class Example {
        private final String example;
        public Example() {
            try {
                example = "Example";
            } catch (Exception e) {
                // Just an example.
    }Obviously you wouldn't need to try-catch something like this (it's a stupid example - I know) , but the point is, the code wouldn't compile, and would return an error saying something like "example may not have been initialized".
    So I've got two questions. Why is this, and is there any way around it?
    Thanks in advance :)

    Why is thisThe actual error message is "The blank final field example may not have been initialized". The Java compiler insists that all the fields have some actual value when a constructor has done its thing. Nonfinal fields will have the "default" value of null, but this is not so for final fields: if they had a default value, you couldn't change them from that default because they're final!
    Once you enter a try block the compiler has no way of knowing that the assignment line will ever get carried out. Some exception might occur and the example field would be left uninitialised ie having no value whatsoever, not even null.
    is there any way around it?In the catch part you could throw the exception and let the caller deal with it.
    Or you could try and assign some value to example within the catch part. Now the compiler will complain "The final field example may already have been assigned". Supposing you wanted it to end up as null in this case (it's not clear why though... But you may have a sensible "default" if for example a file can't be written to or some other exceptional state has occured)
    class Example {
        private final String example;
        public Example() {
            String str;
            try {
                str = "Example";
            } catch (Exception e) {
                str = null;
            example = str;
    }

  • Txt file read in- StringTokenizer- Try Block Catch for errors

    Hello
    So I am having a few issues with a school project. First is with my ReadWithScanner. It does not read in the file giving me a NullPointerException error on the line <Scanner in = new>. I have tried a few other read in files and they do not seem to be working.
    I am also stuck on the logic on the try block catch statement. How does a person set up a �custom� try block that looks for errors like the ones below? I have attempted to start in the commented code.
    The text file has to read in 1000 individual lines of code and are separated by �;� and should be separated into tokens with the StringTokenizer class what I attempted to do below also. Both are mere attempts and need help�
    This is some what of the logic I thought of doing
    1.Read the first line in first with the scanner class
    2.use delimiter separated by �;�
    3.Tokenizer the line into separate tokens- invoiceCode, fName, lName�
    4.Check classes- check Name, check Date, checkPrice, checkPrice, checkGenre, checkShippingDate invoiceCode = "Error Code" checkInvoiceCode(String invoiceCode)checkName(String name), checkPrice(String price), checkGenre(String genre)
    5.Apply the regular expressions to each try block statement
    a.Assign a letter to each error for example if invoice was to short it would be assigned a letter A
    b.If invoice does have the right characters it would be assigned B
    c.If name has to few words it would be assigned D
    d.�
    This is an example of a good field from the text file
    XYG726;Smith,Mr. John M.;29.96;comedy;101008;100604
    Not so good line
    Lu15;Will, Mark;50.00;Science;030305;030807
    The file should then be printed out in the program not to a text file. It only needs to print the invoice number and error code letter assignment.
    If you have any questions feel free to let me know. Thanks for all or any help you have to offer.
    Invoice
    Three upper case letters followed by three digits
    Regular Expression "[A-Z]{3}[0-9]{3}"
    Customer Name
    Should be in the form: last name followed by a <,> optional title (Mrs. Mrs�) then first name optional middle initial Titles must be
    So regular expression something like �[a-z][A-Z]+([A-Z]{1}?[a-z][./})+[a-z][A-Z]�
    Sale Price
    Two decimal digits to the left of the decimal point. The price should not have a leading zero.
    Regular Expression [0-9]{2}*./[0-9]
    Genre
    The genre should only contain lowercase letters. Regular expression �[a-z]�
    ShipDate and Order Date-
    Must be standard dates- MMDDYY. The order date and shipping date has to be after today�s date. Regular expression �[0-9]{2}+[0-9]{2}+[0-9]{2}�
    package Project3;
    import java.util.StringTokenizer;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.io.*;
    import java.util.Scanner;
    public class ReadWithScanner {
    private final File fFile;
    public static void main (String args[]){
    Scanner in = new Scanner(new File("e:\\work_space_java\\Project\\Package3\\movie.txt"));
    Scanner.processLineByLine();
    public ReadWithScanner(String aFileName){
    fFile = new File(aFileName);
    public final void processLineByLine(){
    try {
    //use a Scanner to get each line
    Scanner scanner = new Scanner(fFile);
    while ( scanner.hasNextLine() ){
    processLine( scanner.nextLine() );
    scanner.close();
    catch (IOException ex){
    protected void processLine(String aLine){
    //use a second scanner again to raed the content of each line
    Scanner scanner = new Scanner(aLine);
    scanner.useDelimiter(";");
    if (scanner.hasNext() ){
    //read each file?
    String name = scanner.next();
    String value = scanner.next();
    else {
    scanner.close();
    //Token Names that are seperated
    StringTokenizer st;
    String invoiceCode = st.nextToken();
    String fname = st.nextToken();
    String lname = st.nextToken();
    String price = st.nextToken();
    String genre = st.nextToken();
    String orderDate = st.nextToken();
    String shipDate = st.nextToken();
    String invoiceCode;
    invoiceCode = "A" checkInvoiceCode(String invoiceCode);
    Pattern p = Pattern.compile("[a-z]{6}[A-Z]{6}[0-9]{6}");
    Matcher m = p.matcher(invoiceCode);
    p.matcher(invoiceCode);
    if(m.matches()) {
    System.out.println(invoiceCode);
    else {
    System.out.println ("A");
    try
    invoiceCode = Integer.parseInt(String);
    catch (NumberFormatException e)
    { System.out.println ("B"); System.exit(1); }
    */

    I have made a quite a few updates to my code. Please look it over again. I have also made many comments to help with the logic. Once again if you have any questions please feel free to ask. Sorry about not using the tags before- I was no aware of them. Thanks for the advice sabre150.
    package Project3;
    import java.util.StringTokenizer;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    import java.io.*;
    import java.util.Scanner;
    public class ReadWithScanner {
         private final File fFile;
         public static void main (String args[]){
                   //read in text file from directory currently it can not read the file
                  Scanner in = new Scanner(new File("e:\\work_space_java\\Project\\Package3\\movie.txt"));
                  //Scans each line of the text in
                  Scanner.processLineByLine();
                //assigns new file name to file
                public ReadWithScanner(String aFileName){
                  fFile = new File(aFileName); 
                public final void processLineByLine(){
                  try {
                    //use a Scanner to get each line from the processLineByLine
                    Scanner scanner = new Scanner(fFile);
                    while ( scanner.hasNextLine() ){
                      processLine( scanner.nextLine() );
                    scanner.close();
                  catch (IOException ex){
                protected void processLine(String aLine){
                  //use a second scanner again to read the content of each line
                   //delmiter should then break each line in the text file into seperate "tokens"
                  Scanner scanner = new Scanner(aLine);
                  scanner.useDelimiter(";");
                  if (scanner.hasNext() ){
                       //reads each line from scanner
                    String name = scanner.next();
                  else {
                  scanner.close();
               /*Convert Tokens from Scanner into String Tokenizer with assigment to each variable
                * I am missing something
                * Need to convert each line read from the scanner (name variable) to the String
                * Tokenizer class
              //Tokens names now assigned a varaible
              StringTokenizer st;
              String invoice = st.nextToken();
              String name = st.nextToken();
              String price  = st.nextToken();
              String genre = st.nextToken();
              String orderDate = st.nextToken();
              String shipDate = st.nextToken();
          /*If statments (Try Block Statements?) with Regular Expressions
          * This is where I have the most issues on how to set up
          * "custom" try and block errors trying to match what I have
          * in the regular expressions. 
          * I believe try and catch statements
          * make this easier but I have used 'match' and 'pattern' with if
          * statments.  If try block statements are easier please show!
          * Regular Expressions may not be correct either
           invoice = checkInvoiceCode(invoice);
           //Defined cerita for Inovice are:
           //Error A = Invoice code is too short  
           //Error B = Invoice code does not have the right characters 
           //Error C = Invoice code digits are all zero
           //Checks for error A
           //Has at least six characters
            Pattern invoiceShort = Pattern.compile("{6}");
            Matcher shortInvoice = invoiceShort.matcher(invoice);
            p.matcher(invoiceCode);
            if(m.matches()) {
                 System.out.println(invoice);      
            else {
                 System.out.println ("A");
            //Checks for error B
            //3 Upper Case Letters followed by three numbers,
            Pattern rightChar = Pattern.compile("[A-Z]{3}[0-9]^0{3}");
            Matcher charRight = rightChar.matcher(invoice);
            p.matcher(invoiceCode);
            if(m.matches()) {
                 System.out.println(invoice);
            else {
                     System.out.println ("B");
            //Checks for error C
            //Where the last three digits are not all zeros
            Pattern notZero = Pattern.compile("*{3}^0{3}");
            Matcher ZeroNot = notZero.matcher(invoice);
            p.matcher(invoiceCode);
            if(m.matches()) {
                 System.out.println(invoice); 
                 else {
                     System.out.println ("C");
         //name = checkFullName(name);
         //Error D = Name field has fewer than two words
         //Error E = Name field has more than four words
         //Error F = Name field has no comma
         //Error G = Name field has a bad title 
         //Error H = Name field has a bad initial 
        /*Have a lot more to do...
        * Still need to go through the same if statement or Try Block statements with this data:
        *      String fname = st.nextToken();
              String lname = st.nextToken();
              String price  = st.nextToken();
              String genre = st.nextToken();
              String orderDate = st.nextToken();
              String shipDate = st.nextToken();
        * But for now I would like to see an example of an if statement I could use
        * (if mine is even right) or catch statement- the rest of the project we look
        * for similar certia as defined in the reg exp for invoice
         /*Writes to Report in the Console
         * Prints data into two columns:
         * Invoice Code and Error Type
         //Prints both column Headings
         private void columnHeadings ()
         System.out.println (padL("",5) +
         padL("Invoice",20) +padL("",20)+
         padL("Error Code",40));
         //movie is the name of the text file
         private void printMovie(Movie aReport) {
         System.out.println(aReport.getInvoiceCode()+"\t"+
               aReport.getErrorType()+"\t");
      *This method pads the string start to the length newLength leaving the
      *string left justified and returning the result.
      private String padL (String start, int newLength)
         String result = new String (start);
         while (result.length() <= newLength) result += " ";
         return result;
      } // end padL
       * This method pads the string start to the length newLength leaving the
       * string right justified and returning the result.
      private String padR (String start, int newLength)
         String result = new String (start);
         while (result.length() <= newLength) result = " " + result;
         return result;
    // end padRThanks a lot.

  • Is it possible to get back to the Try block from a Catch block?

    I would like to perform validations on a config file. To do so, I have a method which will throw a MissingConfigException or an InvalidConfigException if something is missing or if something doesn't match a regex pattern. Although I have to do that with many different configs and I would like to go through all of them so that my error message will report all missing / incorrect configs at once instead of 1 at a time. Thus, I wanted to know if there would be any way I could do something like:
    try {
         config.validate("ServerPort","\\d+");
         config.validate("MaxClients","\\d+");
    } catch(MissingConfigException e) {
    } catch(InvalidConfigException e) {
    and have the catch block executed before going through the try block from where the exception was thrown.
    Thanks in advance!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

    No, you can't jump back into the try. You can put your try/catch inside a loop though, so that if one fails, it will loop around and start a new try for the next one. Define a class that holds all the data you need to pass to validate, and make an array or List of those objects. Change or add a validate signature that takes this object, or just extract the strings from each one when you call validate.
    ThingToValidate[] val = new ThingToValidate[] { new ThingToValidate("ServerPort", "\\d+"),
        new ThingToValidate("MaxClients", "\\d+"),
    for (int ix = 0; ix < val.length; ix++) {
        try {
            config.validate(val[ix]);
            // OR
            config.validate(val[ix].getThingy, val[ix].getOtherThingy[]);
        catch (....) {
            // logger.warn("failed...");

  • Handling socket exception - Retrying a "try" block

    I have a program which attempts to retrieve an object through a socket. However sometimes I get the following exception:
    java.net.SocketException: Connection reset
    This is a problem as I need the object to continue program execution.
    An overview of the code is:
    try {
                UrlServerObject crawlUrlObj = getUrlToCrawl();
                // Download webpage at the url returned by getUrlToCrawl()
                webpage = loadPage(crawlUrlObj);
    catch(java.net.SocketException ex) {
              System.err.println("An exception occurred.\n" +
                        "The exception was: " + ex.toString());
            }The getUrlToCrawl() method simply opens a socket a communicates with a server which sends back an object.
    My question is what is the best way to catch the exception and "retry" the complete "try" block until an object is read?
    Thanks

    When you say a loop, do you mean something along the
    lines of:
    boolean gotUrl = false;
    while(!gotUrl) {
    UrlServerObject crawlUrlObj = getUrlToCrawl();
    if(crawlUrlObj != null) gotUrl = true;
    }The exception would be thrown in the catch block
    still though?getUrlToCrawl is presumably the code you originally posted? Yep, that's about the size of it. Although I wouldn't keep trying until you got a URL, you should consider the possibility that there isn't one, and deal with that. I'd try it a set number of times, and move on after that

  • Overloading constructor

    Hello
    I am having an adhoc problem with overloaded constructors:
    public class myFileRead {
    private int type;
    public myFileRead(File mp3, int nomenclature) {  //constructor 2
    type = nomenclature;
    myFileRead(File mp3);
    public myFileRead(File mp3) {  //constructor 1
    //code excised
    }All that I am tyring to do is set a member variable in constructor 2 and call constructor 1. My IDE is saying a missing ")" in constructor 2 call to constructor 1 at the parameter mp3. I have done this before. I have done a clean build. What am I missing here? Any enlightment welcomed.

    Hi Vanilla
    That was stupid about the type-ing the argument.
    However now it is demanding that the this(mp3) be
    e the first line. Yes. As Adeodatus mentioned. This is a requirement of the Java language.
    I dont see why. To ensure that all constructors complete before anything else happens, I guess. You probably rarely or never need to do something else first, and by knowing that you can't just invoke a constructor any old time, you eliminate one potential source of a lot of inconsistent or invalid or unpredicatable state.
    This is not
    extending any other object, except Object of course.Irrelevant.
    Are not all constructors equal? Yeah, I guess so. I don't see what that has to do with anything.
    Does this thereby
    y prevent the technique of using overloaded
    constructor to set a member value and then call some
    other constructor declaration?No. It just means that if you're going to call another c'tor, it must be the first thing that you do.

  • Return statement inside try block

    what is wrong if i write code like as below...please explain me since i am new to java
    class sample{
    public String method(){
    try{
    String str="abc";
    return abc;
    catch(Exception e){}
    }

    veldhanas wrote:
    return abc;In your code there is no varible declared as abc. It is a value assigned in str.
    Suppose if the code in try statement throws exception the return statement is skipped and the
    associated catch block will get executed. So your catch block must return a result of type String.... or throw another (or the same) exception.
    In this case, since there's no way the code in the given "try" block can throw an exception, it would have been better to not even have a try/catch block in the first place.
    And almost never just swallow exceptions like that (an empty catch block). There are only a few cases where it's ok to swallow them (such as in finally blocks where you're cleaning up resources which may throw exceptions while cleaning up, and you want to continue cleaning up and ignore those kinds of exceptions).

  • Can we use an overloaded constructor of a Java Bean with Session Tracking

    Hi Friends,
    If any one can solve my query.... It would be helpful.
    Query:
    I have a Java Bean with an overloaded constructor in it. I want to use the overloaded constructor in my JSP.
    1. One way of doing that is to use it directly in the "Scriptlets" (<% %>). But then I am not sure of the way to do session tracking. I think I can use the implicit objects like "session", "request" etc. but not sure of the approach or of the implementation method.
    2. Another way is through the directive <jsp: useBean>. But I cannot call an overloaded constructor with <jsp: useBean>. The only alternative way is to use the directive <jsp: useBean> where I have to write getter and setter methods in the Java Bean and use the <jsp: setProperty> and <jsp: getProperty> standard actions. Then with this approach I cannot use the overloaded constructor.
    Can any one suggest me the best approach to solve this problem ?
    Thanks and Regards,
    Gaive.

    My first reaction is that you can refactor your overloaded constructor into an init(arguments...) method. Instead of overloaded constructor, you can call that init method. This is the ideal solution if possible.
    As to the two choices you listed:
    1. This is OK, I believe. You can use scriplet to define the bean and put it into session scope of the pageContext. I am not sure exactly what you meant by session tracking; whatever you meant, it should be doable using HttpSessionAttributeListener and/or HttpSessionBindingListener.
    2. Agreed. There is no way that <jsp:useBean> can call a constructor that has non-empty arguments.
    Please tell me how it works for you.

  • Won't recognise code in try block

    I've got a try block which has a line of code in it as shown:
         public static String ProcessUserInput(){          
              BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
              try{
         String line = kbd.readLine();
    catch (IOException ex)
    System.out.println( "Error reading keyboard input." );
    return line;
    When i compile this it gives me this error:
    cannot resolve symbol
    symbol : variable line
    location: class UserException
    return line;
    It seem like it does not recognise what is in the try block why is this.

    A variable's scope--the piece of your code where it's visible--is the nearest enclosing block. In this case, line is only visible in the try block.
    String line = null;
    try {
        line = kbe.readLine();
    catch (...) {
    return line;Side note: Just printing an error message is NOT the way to handle exceptions. First, it lets subsequent code continue executing as if everything's fine--you've taken away its way of knowing that things are NOT fine. You should either actually handle the exception (by providing some default behavior, or retrying), or else just let it be thrown, or wrap it and rethrow it.

  • Oracle JSP Exception code too large for try block

    My jsp is exceeding the memory limit (64KB for Oracle 10g App server i think its the JVM limit),
    so it is throwing exception ,code too large for try block,how to over come this,I cant minimize the use of logic tags because it is business requirement.please help me out.

    I think you need to give a value to the attribute buffer in the <%@ page%> directive to solve the problem.
    There will not be any need of going for pagination then.
    buffer="none | 8kb | sizekb"The buffer size in kilobytes used by the out object to handle output sent from the compiled JSP page to the client Web browser. The default value is 8kb. If you specify a buffer size, the output is buffered with at least the size you specified.
    check the documentation at
    http://java.sun.com/products/jsp/tags/11/syntaxref11.fm7.html
    Uday

  • Try block inside a try block - who is throwing StaleConnectionException?

    int retry = 0;
    try{ //MAIN TRY
    //GET Datasource from context<---is this throwing?
    boolean retry = false;
    do {
         try {
              retry = false;
    GET CONNECTION FROM DATASOURCE<--or shld this be?
         }catch(SQLException e) {
         //FIRST CATCH
         if (retryattempts++ < 3){
              retry = true;
    } while (retry);
    //DO something which requires try block
    }catch(SQLException e)
    {//Second catch
    When I do this the StaleConnectionException is caught by the second catch... does this mean that the staleconnectionexception is thrown when getting datasource from initialcontext and not while getting connections?
    Edited by: wannaBeACsGrad on Jan 10, 2008 9:09 AM

    I am not sure what your are trying to do. Your code as posted is incomplete and could not possibly compile. The Try/catches do not seem to be nested.
    More importantly, why in the world would you ever want to have a try inside a try? You can have a single try, then several different calls in loops or whatever that can potentially throw Exceptions and then have mulitple catch statements to handle them. For instance, you could have something like this:
    try {
    } catch (NullPointerException ne) {
       // handle null issues here
    } catch (NumberFormatException nfe) {
       // handle number format issues here
    } catch (Exception e) {
       // everything else falls here
    }Keep in mind that you don't want to do any "Error Hiding". Make sure you handle each case appropriately.

  • Can't throw exception inside try block!

    Hi,
    I'm having a problem trying to throw an error inside a try block.
    To illustrate:
    public class TestException {
    public TestException() {
    try {
    int ret = foo();
    System.out.println("ret is " + ret);
    } catch (Exception ex) {
    System.out.println("exception caught");
    public int foo() throws Exception {
    int ret = 0;
    try {
    throw new Exception("test exception");
    } finally {
    return ret;
    public static void main(String[] args) {
    new TestException();
    If I run this the only output is "ret is 0" - I do not catch the thrown exception! What am I doing wrong?
    Any and all help will be very gratefully received.
    Thanks.

    I need to correct myself: I've re-read the spec, and actually the behaviour is conformant with the JLS: JLS says that the return statement completes abruptly, and an abrupt return in a finally block that didn't have a (applicable or any) catch block will result in the original exception being 'forgotten'.
    Very unintuitive, but as-spec'ed

  • While local variable initialized inside try block compiler throws error???

    Check out this code where two local variables(one String and the other int type) is declared at the beginning of the method and initialized inside try block. now when i compile this app, it gives an error sayin' that Variables not been initialized. Can anyone tell me why compiler is throwin' an error message?
    Many thanks.
    import java.io.*;
    public class Test{
    public static void main(String[] args){
    String aa;
    int c;
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("EnterAnything:");
    try{
    aa = in.readLine();
    c = 1;
    catch(IOException e){
    System.out.println(e.getMessage());
    System.out.println(aa);
    System.out.println(c);
    }

    jfbriere,
    Thanks to u all.
    that every reference to the variable is necessarily preceded
    by execution of an assignment
    to the variable.But I've initialized the variable c and aa inside try block before referencing it as a parameter of println()?
    Can u clarify this?
    --DM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Maybe you are looking for

  • GR IR Amount Differences setoff

    Hi Good Morning Every one, Here a situation, we have short-billing from the supplier whereby the GR qty is more than the invoice qty and we are still pending billing from the supplier.  Here an example of the short-billing: GR Qty:100, IR Qty: 99 the

  • How do I add more $ to my iTunes acct on my IPOD touch

    How do I add more $ to my iTunes acct on my IPOD touch

  • Website not displaying in Firefox. Works fine in IE 10 & Chrome. Windows 8/x64

    Using Firefox 21.0 on Windows 8/x64. I am experiencing some sites where Firefox displays an odd looking graphic but none of the UI that displays in Chrome or IE 10. I can re-create it for example by going to http://www.basspay.com. I'm stumped. I rem

  • Podcast hasn't updates since February, it's almost April.

    Hey Guys, Not sure if this is the correct forum selection. But I have a podcast up on itunes, and up until the 10/2/2011 everything was fine, and ever since then the Podcast directory hasn't updates, It shows only 19 episodes and there is more then t

  • Should I go with CRUCIAL Ram?

    Hi guys! I was wondering if it's safe to upgrade my iMac using *CRUCIAL Ram*... my old G5 came with 1GB from Apple and I bought another 1GB from CRUCIAL and *NEVER had any problem!* Of course I know I have to pick the correct model for my iMac, but t