Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
School of Computer Science & Information Technology G6DICP - Lecture 6 Errors, bugs and debugging Types of Errors Syntax errors Semantic errors 2 Mistakes in the rules of the language itself Illegal Java - errors of grammar or punctuation Mistakes in the logic of the code Legal Java - but not what you intend! Where errors show themselves Compile-time errors Run-time errors Some syntax errors are detected by the VM when the program is run Legal Java - that causes problems under certain conditions. Logical errors 3 Many syntax errors are detected by the compiler The compiler will generate an error message including a line number Unexpected results - bugs! Compiler Errors If javac gives no output, the compilation is successful C:\code javac fname.java error: cannot read: fname.java 1 error C:\code Cannot read… compiler error 4 This means that the source file (fname.java) has not been read. Usually a typo in the file name or javac command Remember Java is case sensitive! Could be file privileges Compiler Errors (2) Most compiler errors have a file name and line number This tells you where the error was detected C:\code javac fname.java fname.java:23: cannot resolve symbol symbol : class string location: class fname string msg; ^ 1 error 5 Compiler Errors (cont.) Most compiler errors have a file name and line number This tells you where the error was detected File name (fname.java) C:\code javac fname.java fname.java:23: cannot resolve symbol symbol : class string location: class fname string msg; ^ 1 error 6 Compiler Errors (cont.) Most compiler errors have a file name and line number This tells you where the error was detected Line number (23) C:\code javac fname.java fname.java:23: cannot resolve symbol symbol : class string location: class fname string msg; ^ 1 error 7 Compiler Errors (cont.) Most compiler errors have a file name and line number This tells you where the error was detected Type of error C:\code javac fname.java fname.java:23: cannot resolve symbol symbol : class string location: class fname string msg; ^ 1 error 8 Compiler Errors (cont.) Most compiler errors have a file name and line number This tells you where the error was detected Details of error Type of error C:\code javac fname.java fname.java:23: cannot resolve symbol symbol : class string location: class fname string msg; ^ 1 error 9 Compiler Errors (cont.) Most compiler errors have a file name and line number This tells you where the error was detected Location of error C:\code javac fname.java fname.java:23: cannot resolve symbol symbol : class string location: class fname string msg; ^ 1 error 10 Compiler Errors (3) The point at which the error is detected is not always the point at which there is a mistake in the code For example unbalanced braces cannot be detected until the braces are closed Compiler errors can have knock-on effects, with other “spurious” errors being caused by the first 11 ADVICE - fix the first compiler error, and attempt to compile before looking at others - they might disappear! Runtime Errors Runtime errors occur while the program is running, although the compilation is successful Usually runtime errors consist of “exceptions” in a thread Errors in the main method, generate exceptions in thread “main” Exception in thread "main" java.lang.NoClassDefFoundError: fname NoClassDefFoundError 12 Caused if the interpreter can’t find the named class file (e.g. fname.class) This is usually a typo - either in the command line, the class declaration or the file name Remember Java is case sensitive! Causes of Runtime Errors Errors that only become apparent during the course of execution of the program External Factors - e.g. Internal Factors - e.g. 13 Out of memory Hard disk full Insufficient i/o privileges etc. Arithmetic errors Attempts to read beyond the end of a file Attempt to open a non-existent file Attempts to read beyond the end of an array etc. Exceptions When a potential error condition occurs while a program is running an Exception occurs Exceptions are of specific types - e.g. 14 For example attempting to read from a non-existent file ArithmeticException IOException ArrayIndexOutOfBoundsException If the program contains code to handle the exception that code is triggered. If there is no code to handle the exception then the program terminates with a runtime error Missing Class File This can be either a compiler error or a runtime error! If a class file used by the program is missing at compile time, then a compiler error is generated If the program is successfully compiled, but a class file is missing when it is run, then a runtime error is generated 15 NoClassDefFoundError Null Pointer Exceptions These are generated if your program atempts to access something non-existent in memory Internally these are drastic, but they can be triggered by extremely subtle errors They do not always provide a line number (or that line might not be where the error is) They can be extremely hard to debug 16 Logical Errors The program compiles and runs, but it doesn’t do what is intended May be caused by: These are “bugs” 17 Some syntax errors (i.e. legal Java that is wrong in the current context) Errors in logical design Term coined by Admiral Grace Hopper for anything that causes a program to do something unexpected Debugging Paper helps - examine your flow charts Code tools Flags - code that tells you where you are in a program Breaks - code that stops the program Watches - code that prints the contents of variables Debuggers Software that implements the above Also runs code visually in “slow motion” Built into most integrated development environments Invaluable for debugging large, complex programs 18