m obile c omputing syntax errors
play

M OBILE C OMPUTING Syntax Errors Violate language rules program - PowerPoint PPT Presentation

Excep&ons EECS1012 M OBILE C OMPUTING Syntax Errors Violate language rules program won't compile Source: programmer Defense: modern IDEs expose these Run&me Errors Make an invalid opera?on program will crash Source:


  1. Excep&ons EECS1012 M OBILE C OMPUTING § Syntax Errors Violate language rules à program won't compile Source: programmer Defense: modern IDEs expose these 😁 § Run&me Errors Make an invalid opera?on à program will crash Source: programmer, end-user, environment Defense: use a defensive and/or excep?on approach § Logic Errors Violate requirement à program will run but with a bug Source: programmer, analyst P ROF . Y. L ESPÉRANCE Defense: tes?ng (unit + integra?on) with coverage Dept. of Electrical Engineering & Computer Science 1 2 1. Error source leads to an incorrect opera&on User types in a string s. It is expected (but not a precondi?on) that s is of the form n/x, where n is a month number. Find the 2. Incorrect opera&ons may be valid or invalid three-leLer month name whose number is n, e.g. 3 à MAR 3. An invalid opera&on throws an excep&on 4. The excep&on causes a crash unless caught 1. Defensive Approach An&cipate all invalid opera&ons and guard against them Sources Programmer, End User, or Logic Handler 2. Excep&on Approach Error Environment Assume all is well and handle invalidity as an excep&on yes yes Error Valid Incorrect Runtime Exception Caught? Operation? Operations no Error no 3 4 EECS1022/Lespérance 1

  2. Excep&ons String result = null; 
 String names = "JanFebMarAprMayJunJulAugSepOctNovDec"; String result = null; 
 int slash = s.indexOf("/"); String names = "JanFebMarAprMayJunJulAugSepOctNovDec"; if (slash != -1) int slash = s.indexOf("/"); { String left = s.substring(0, slash); String left = s.substring(0, slash); int monthNumber = Integer.parseInt(left); if (left.matches("\\d{1,2}")) { int start = 3 * (monthNumber - 1); int monthNumber = Integer.parseInt(left); result = names.substring(start, start + 3); if (monthNumber >= 1 && monthNumber <= 12) { int start = 3 * (monthNumber - 1); result = names.substring(start, start+3); } } For a fine-grained return: use else to return a custom code } 5 6 String result; 
 Object try 
 { 
 String names = "JanFebMarAprMayJunJulAugSepOctNovDec"; Th rowable int slash = s.indexOf("/"); String left = s.substring(0, slash); int monthNumber = Integer.parseInt(left); int start = 3 * (monthNumber - 1); Error Exception result = names.substring(start, start + 3); 
 } 
 catch (StringIndexOutOfBoundsException e) VirtualMachineError RuntimeException { result = null; For a fine-grained return: AssertionError IOException } - custom codes, catch (NumberFormatException e) AWTError PrinterException - e.getMessage() { result = null; - Log.getStackTraceString(e) ... ... } return result; 7 8 EECS1022/Lespérance 2

  3. Excep&ons String result; 
 try 
 { 
 String names = "JanFebMarAprMayJunJulAugSepOctNovDec"; int slash = s.indexOf("/"); String left = s.substring(0, slash); int monthNumber = Integer.parseInt(left); int start = 3 * (monthNumber - 1); result = names.substring(start, start + 3); 
 } 
 catch (Exception e) { result = null; } return result; See EH0, EH1, EH2, and EH3.java 9 EECS1022/Lespérance 3

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend