рдореИрдВ рдСрдирд▓рд╛рдЗрди рд╢рд┐рдХреНрд╖рд╛ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо udemy.com (рдХреМрд░рд╕реЗрд░рд╛ / рдПрдбрдПрдХреНрд╕ рдХреЗ рд╕рдорд╛рди) рдкрд░ рдЬрд╛рд╡рд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдХрд╛рд▓рд╛ рднреА рд╕рд┐рдЦрд╛рддрд╛ рд╣реВрдВред
1. рдЬрд╛рджреВ рдХреА рдЬрд╛рдБрдЪ / рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд
2. рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рддрдВрддреНрд░
3. рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд (рдЕрдирдХрд╡рд░реНрдб) рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдлреЗрдВрдХрддрд╛ рд╣реИ
4. рдХрдИ рдЕрдкрд╡рд╛рдж
5. рдпрд╛ рдкрдХрдбрд╝рдирд╛, рдпрд╛ рдлреЗрдВрдХрдирд╛
6. рдХрдВрдкрд╛рдЗрд▓рд░ / рдЬреЗрд╡реАрдПрдо рд╡реНрдпрд╡рд╣рд╛рд░
7. рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдФрд░ рдереНрд░реЛ
8. рд╡рд┐рд░рд╛рд╕рдд рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг
1. "рдореИрдЬрд┐рдХ" рдХреА рдЬрд╛рдБрдЪ / рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд
рдЬрд╛рд╡рд╛ рдореЗрдВ рдЕрд╕рд╛рдзрд╛рд░рдг рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рддрдВрддреНрд░ "рдЬрд╛рджреВ" рдХреЗ рджреЛ рддрддреНрд╡реЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╡рд╣ рд╕реНрд░реЛрдд рдЬреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
1. "рдореИрдЬрд┐рдХ" java.lang.Throwable - рдереНрд░реЛ, рдХреИрдЪ рдФрд░ рдереНрд░реЛ рдореЗрдВ, рдХреЗрд╡рд▓ рдереНрд░реЛрдПрдмрд▓ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд╛рд░рд┐рд╕ рдЦрдбрд╝реЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ ( рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд┐рдЫрд▓реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рдЬрд╛рдВрдЪ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ )ред рдереНрд░реЛ, рдХреИрдЪ рдФрд░ рдереНрд░реЛ рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ "рдЕрдзрд┐рдХрд╛рд░" рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реЛрд░реНрд╕ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
2. рд╕рднреА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ "рдЬрд╛рдБрдЪ" рдФрд░ "рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд" рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЧреБрдг rhizome (рдереНрд░реЛрдПрдмрд▓, рдПрд░рд░, рдПрдХреНрд╕реЗрдкреНрд╢рди, RuntimeException) рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред
рдЖрдЧреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдмрд╕ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐
- рдлреЗрдВрдХрдиреЗ рдпреЛрдЧреНрдп рдФрд░ рдЕрдкрд╡рд╛рдж рдФрд░ рдЙрдирдХреЗ рд╕рднреА рд╡рдВрд╢рдЬ (рддреНрд░реБрдЯрд┐ рдФрд░ рд░рдирдЯрд╛рдЗрдо рдЕрдкрд╡рд╛рдж рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдЬрд╛рдБрдЪ рдХреА рдЧрдИ
- рддреНрд░реБрдЯрд┐ рдФрд░ RuntimeException рдФрд░ рдЙрдирдХреЗ рд╕рднреА рд╡рдВрд╢рдЬ - рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд
рдЬрд╛рдБрдЪ рдЕрдкрд╡рд╛рдж = рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдБрдЪ рдЕрдкрд╡рд╛рдж рдЬрд╛рдБрдЪред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрдХ рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред
рдЕрдкрд╡рд╛рдж рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ
Object | Throwable / \ Error Exception | RuntimeException
рдЖрдЗрдП рдЬрд╛рдБрдЪ рдХреА рдЧрдИ / рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ
Object | Throwable(CHECKED) / \ Error(UNCHECKED) Exception(CHECKED) | RuntimeException(UNCHECKED)
2. рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рддрдВрддреНрд░
рдореИрдВ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╣рддрд╛ рд╣реВрдВ рдФрд░ "рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА" рдХрд╣рддрд╛ рд╣реВрдВ, рд╣рдо "рдбрд░рд╛" рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреЛрд▓рд┐рд╢ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ
рд╣рдо рдирд╣реАрдВ рдЫреЛрдбрд╝ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рдЪреЗрддрд╛рд╡рдиреА рдирд╣реАрдВ рджреЗрддреЗ
public class App { public static void main(String[] args) { throw new Exception(); // } } >> COMPILATION ERROR: unhandled exception: java.lang.Exception
рд╣рдо рдЫреЛрдбрд╝ рдирд╣реАрдВ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди "рдХрдо" рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреА
import java.io.IOException; public class App { public static void main(String[] args) throws IOException { throw new Exception(); // } } >> COMPILATION ERROR: unhandled exception: java.lang.Exception
рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдлреЗрдВрдХ рд░рд╣реЗ рд╣реИрдВ
public class App { public static void main(String[] args) throws Exception { // Exception throw new Exception(); // Exception } }
рд╣рдо рдЬрд┐рддрдирд╛ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ
public class App { public static void main(String[] args) throws Throwable { // "" Throwable throw new Exception(); // Exception } }
рд╣рдо рдХреБрдЫ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЪреЗрддрд╛рд╡рдиреА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
public class App { public static void main(String[] args) throws Exception { // // } }
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рднреА рдХреЛ рдбрд░рдирд╛ рдЪрд╛рд╣рд┐рдП
public class App { public static void main(String[] args) { f(); // } public static void f() throws Exception { } } >> COMPILATION ERROR: unhandled exception: java.lang.Exception
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ (рднрдпрднреАрдд) рдмрд╛рдХреА рд▓реЛрдЧреЛрдВ рдХреЛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдбрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ
public class App { // Throwable public static void main(String[] args) throws Throwable { f(); } // - Exception public static void f() throws Exception { } }
"рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рдж" рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХреНрдпрд╛ рд╣реИ? рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЛрдб "рд╕реНрдХреЗрдЪ" рдореЗрдВ рдХрд╣рддреЗ рд╣реИрдВ, рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╡рд░реНрдЧ
public class InternetDownloader { public static byte[] (String url) throws IOException { return "<html><body>Nothing! It's stub!</body></html>".getBytes(); } }
рдФрд░ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ ALREADY рдХреЛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд IOException рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП "рдмрд╛рдзреНрдп" рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдбрдореА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЖрдк рдЕрднреА рддрдХ рдРрд╕рд╛ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ - рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред
3. рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд (рдЕрдирдХрд╡рд░реНрдб) рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рдлреЗрдВрдХрддрд╛ рд╣реИ
рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЬреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рджреНрд╡рд╛рд░рд╛ "рдбрд░рд╛рддрд╛" рд╣реИ, рд╡рд╣ рд╣рдо рдкрд░ рдХреЛрдИ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рдбрд╛рд▓рддреА рд╣реИред
public class App { public static void main(String[] args) { f(); } public static void f() throws RuntimeException { } }
рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдХреЛрдб рд░реАрдбрд░ рдХреЛ "рдмрддрд╛рдиреЗ" рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рд╡рд┐рдзрд┐ рдХреБрдЫ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рд╕рдХрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг (java.lang.NumberFormatException - рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрдкрд╡рд╛рдж):
package java.lang; public final class Integer extends Number implements Comparable<Integer> { ... /** * ... * * @param sa {@code String} containing the {@code int} * representation to be parsed * @return the integer value represented by the argument in decimal. * @exception NumberFormatException if the string does not contain a * parsable integer. */ public static int parseInt(String s) throws NumberFormatException { return parseInt(s,10); } ... }
Integer.parseInt () рдПрдХ рдЕрдиреБрдЪрд┐рдд рддрд░реНрдХ рдкрд░ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд NumberFormatException рдХреЛ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ (int k = Integer.parseInt ("123abc")), рдпрд╣ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд рд╣реЛрддрд╛ рд╣реИ
- рд╡рд┐рдзрд┐ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ: рдирдВрдмрд░рдлрд╝реЙрд░реНрдореИрдЯ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ
- рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ (javadoc): @ рдЕрдкрд╡рд╛рдж
рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХреГрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
4. рдХрдИ рдЕрдкрд╡рд╛рдж
рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ EOFException рдФрд░ FileNotFoundException IOException рдХреЗ рд╡рдВрд╢рдЬ рд╣реИрдВред
рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рдлреЗрдВрдХрддреЗ рд╣реИрдВ
import java.io.EOFException; import java.io.FileNotFoundException; public class App { // public static void main(String[] args) throws EOFException, FileNotFoundException { if (System.currentTimeMillis() % 2 == 0) { throw new EOFException(); } else { throw new FileNotFoundException(); } } }
рдпрд╛ рдЙрд╕ рддрд░рд╣
import java.io.EOFException; import java.io.FileNotFoundException; public class App { // public static void main(String[] args) throws EOFException, FileNotFoundException { f0(); f1(); } public static void f0() throws EOFException {...} public static void f1() throws FileNotFoundException {...} }
рдФрд░ рд╣рдо рдордЬрдмреВрдд (рджреЛрдиреЛрдВ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкреВрд░реНрд╡рдЬ) рдХреЛ "рдбрд░рд╛" рд╕рдХрддреЗ рд╣реИрдВ
import java.io.EOFException; import java.io.FileNotFoundException; import java.io.IOException; public class App { // public static void main(String[] args) throws IOException { if (System.currentTimeMillis() % 2 == 0) { throw new EOFException(); } else { throw new FileNotFoundException(); } } }
рдпрд╛ рдЙрд╕ рддрд░рд╣
import java.io.EOFException; import java.io.FileNotFoundException; public class App { // public static void main(String[] args) throws IOException { f0(); f1(); } public static void f0() throws EOFException {...} public static void f1() throws FileNotFoundException {...} }
рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╡ рд╣реИ: EOFException рдФрд░ FileNotFoundException "IOException" рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╣реИрдВ, рдФрд░ InterruptedException "рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЕрдЫреВрддрд╛" рд╣реИ (InterruptedException IOException рдХрд╛ рд╡рдВрд╢рдЬ рдирд╣реАрдВ рд╣реИ)
import java.io.EOFException; import java.io.FileNotFoundException; public class App { public static void main(String[] args) throws IOException, InterruptedException { f0(); f1(); f2(); } public static void f0() throws EOFException {...} public static void f1() throws FileNotFoundException {...} public static void f2() throws InterruptedException {...} }
5. рдпрд╛ рдкрдХрдбрд╝рдирд╛, рдпрд╛ рдлреЗрдВрдХрдирд╛
рдЖрдкрдХреЛ рдбрд░рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЕрд╡рд░реЛрдз рдХрд┐рдпрд╛ рдерд╛
рдЗрддрдирд╛
public class App { public static void main(String[] args) { try { throw new Exception(); } catch (Exception e) { // ... } } }
рдпрд╛ рддреЛ (рд╣рдо рдкреВрд░реНрд╡рдЬреЛрдВ рдФрд░ рд╕рдЯреАрдХ рдЕрд╡рд░реЛрдзрди рдкрд░ рдкрдХрдбрд╝)
public class App { public static void main(String[] args) { try { throw new Exception(); } catch (Throwable e) { // ... } } }
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЗрд╡рд▓ рдПрдХ рд╡рдВрд╢рдЬ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
public class App { public static void main(String[] args) { try { throw new Throwable(); } catch (Exception e) { // ... } } } >> COMPILATION ERROR: unhandled exception: java.lang.Throwable
рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, "рднрд╛рдИ" рдХрд╛ рдЕрдВрддрд░рд╡рд┐рд░реЛрдз рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ
public class App { public static void main(String[] args) { try { throw new Exception(); } catch (Error e) { // ... } } } >> COMPILATION ERROR: unhandled exception: java.lang.Exception
рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ рдбрд░рд╛ рдирд╣реАрдВ рд╕рдХрддреЗ
import java.io.EOFException; import java.io.FileNotFoundException; public class App { // EOFException catch-, public static void main(String[] args) throws FileNotFoundException { try { if (System.currentTimeMillis() % 2 == 0) { throw new EOFException(); } else { throw new FileNotFoundException(); } } catch (EOFException e) { // ... } } }
6. рдХрдВрдкрд╛рдЗрд▓рд░ / рдЬреЗрд╡реАрдПрдо рд╡реНрдпрд╡рд╣рд╛рд░
рдЗрд╕реЗ рд╕рдордЭрдирд╛ рд╣реЛрдЧрд╛
- рд╕рдВрдХрд▓рд┐рдд рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рдордп рдЬрд╛рдБрдЪ рд╣реЛрддреА рд╣реИ (рд╕рдВрдХрд▓рди-рд╕рдордп рдЬрд╛рдБрдЪ)
- рд░рдирд┐рдВрдЧ рдЕрдкрд╡рд╛рдж (рдХреИрдЪ) рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╣реЛрддрд╛ рд╣реИ (рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХрд┐рдВрдЧ)
public class App { // Exception public static void main(String[] args) throws Exception { Throwable t = new Exception(); // Exception throw t; // } } >> COMPILATION ERROR: unhandled exception: java.lang.Throwable
рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рд╕рд╛рджреГрд╢реНрдп
public class App { public static void main(String[] args) throws Exception { Object ref = "Hello!"; // ref char c = ref.charAt(0); // } } >> COMPILATION ERROR: Cannot resolve method 'charAt(int)'
рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрджрд░реНрдн рд▓рд┐рдВрдХ рдкреНрд░рдХрд╛рд░ java.lang.String (рдЬрд┐рд╕рдореЗрдВ рдПрдХ charAt (int) рд╡рд┐рдзрд┐ рд╣реИ) рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓рд┐рдВрдХ рдХрд╛ TYPE java.lang.Object рд╣реИ (рдкреНрд░рдХрд╛рд░ java .lang.Object рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ java.lang.String рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн)ред рд╕рдВрдХрд▓рдХ "рдмрд╛рдПрдВ рдкреНрд░рдХрд╛рд░" (рд▓рд┐рдВрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░, рд▓рд┐рдВрдХ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ) рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХреЛ рдЫреЛрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ SITUATION рдореЗрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрд╕ рдЯреА рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд░реЗрдлрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдЕрд▓рдЧ рд╕рдВрдХрд▓рди рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо COULD SEPARATELY рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдЬрд╛рд░ рдореЗрдВ рдкреИрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
// ! ! public class App { public static void f0(Throwable t) throws Exception { throw t; } public static void f1(Object ref){ char c = ref.charAt(0); } }
рдФрд░ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХреЛ рд▓реЗрддрд╛ рд╣реИ, рдЗрд╕реЗ рдХреНрд▓рд╛рд╕рдкрд╛рде рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ App.f0 (new Throwable ()) рдпрд╛ App.f1 (new Integer (42)) рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬреЗрд╡реАрдПрдо рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдПрдХ рдЬрд╛рдБрдЪ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдиреЗ рдЯреНрд░реИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ (f0 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдпрд╛ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ (рдПрдл 1 рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдирд╣реАрдВ рд╣реИ!
рдЬрд╛рд╡рд╛ рд╕реНрдереИрддрд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рднрд╛рд╖рд╛ рд╣реИ (рдпрд╛рдиреА, рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ (рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдмреБрд▓рд╛рдпрд╛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ ...) рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ (рдбрд╛рдпрдиреЗрдорд┐рдХ рдЯрд╛рдЗрдкрд┐рдВрдЧ рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдПрдБ - рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╣реА рдЙрдкрдпреЛрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ)ред
рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕ рдХреЛрдб рдХреЛ рдирд╣реАрдВ рдЫреЛрдбрд╝реЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реЛрдЧреА
public class App { // Exception public static void main(String[] args) throws Exception { try { Throwable t = new Exception(); // Exception throw t; // } catch (Exception e) { System.out.println("!"); } } } >> COMPILATION ERROR: unhandled exception: java.lang.Throwable
public class App { // Throwable public static void main(String[] args) throws Throwable { try { Throwable t = new Exception(); // Exception throw t; } catch (Exception e) { // Exception System.out.println("!"); } } } >> !
7. рдУрд╡рд░рд░рд╛рдЗрдбрд┐рдВрдЧ рдФрд░ рдереНрд░реЛ
рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╕рдордп, рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдЕрдкрд╡рд╛рдж рд╕реВрдЪреА рдХреЛ рдкреВрд░реНрд╡рдЬ рдХреЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗред
рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рд╕реВрдЪреА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ "рдордЬрдмреВрдд" рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
import java.io.FileNotFoundException; import java.io.IOException; public class Parent { // IOException InterruptedException public void f() throws IOException, InterruptedException {} } class Child extends Parent { // IOException @Override public void f() throws FileNotFoundException {} }
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣рд╛рдВ рд╣рдордиреЗ рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ "рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░" рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА
import java.io.IOException; public class Parent { public void f() throws IOException, InterruptedException {} } class ChildB extends Parent { @Override public void f() throws Exception {} } >> COMPILATION ERROR: overridden method does not throw 'java.lang.Exception'
рдЖрдк рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдХреАрд░реНрдг рдХреНрдпреЛрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ?
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдерд┐рддрд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
public class Parent { // Exception public void f() throws Exception {} }
// Java, , , public class Child extends Parent { // Exception Throwable public void f() throws Throwable {} }
public class Demo { public static void test(Parent ref) { // , Parent.f() Exception catch try { ref.f(); } catch(Exception e) {} } }
public class App { public static void main(String[] args) { // , Demo.test Parent - Child Demo.test(new Child()); } }
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ - рдпрджрд┐ рдХреЛрдИ рд╡рдВрд╢рдЬ рдкреВрд░реНрд╡рдЬ рдХреЗ рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рдЬреЛ рдкреВрд░реНрд╡рдЬ рдХреЗ рд▓рд┐рдП "рдкреНрд░рддреАрдХреНрд╖рд╛" рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рд╡рдВрд╢ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ
8. рд╡рд┐рд░рд╛рд╕рдд рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг
рдЬрд╛рдБрдЪ / рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдЭрдВрдбреЗ рдХреЗ рд╕рд╛рде рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ
Object | Throwable(CHECKED) / \ Error(UNCHECKED) Exception(CHECKED) | RuntimeException(UNCHECKED)
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╕реНрдерд╛рди рддрд░реНрдХ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рд╣рдо рдЗрд╕ рддрд░реНрдХ рдкрд░ рдмрд╛рдж рдореЗрдВ (рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ) рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрд╕реНрдЯрдо рдЕрдкрд╡рд╛рдж рд╡рд░реНрдЧреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ / рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕рдВрдкрддреНрддрд┐ EXCLUSIVELY рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд╣реИред
рдирд┐рдпрдо рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ:
1. рдпрджрд┐ рд╕реВрдЪреА рд╕реЗ рдЕрдкрд╡рд╛рдж рдереНрд░реЛрдмреЗрдмрд▓, рддреНрд░реБрдЯрд┐, рдЕрдкрд╡рд╛рдж, рд░рдирдЯрд╛рдЗрдо рдПрдХреНрд╕реЗрдкреНрд╢рди рд╣реИ - рддреЛ рдЖрдкрдХреА рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
2. рдпрджрд┐ рдЖрдк рд╕реВрдЪреА рд╕реЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдкрдХреА рд╕рдВрдкрддреНрддрд┐ рдкреВрд░реНрд╡рдЬ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдпрд╣рд╛рдВ рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рддреЛрдбрд╝рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред
рдпрджрд┐ рд╣рдо рд╡рдВрд╢рдЬреЛрдВ A, B, C, D, E, F, G, H, I, J, K, L рдХреЛ рдЬрдиреНрдо рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ "рдкреНрд░рдХрдВрдж" (рдирд┐рдореНрди, рддреНрд░реБрдЯрд┐, рдЕрдкрд╡рд╛рдж, RimeimeException) рд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп / рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рдЖрд░реЗрдЦ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
Object | Throwable(CHECKED) / | \ Error(UNCHECKED) | Exception(CHECKED) | | | | | A(UNC) D(UNC) | F(C) RuntimeException(UNCHECKED) / \ | / \ | | B(UNC) C(UNC) | G(C) H(C) I(UNC) J(UNC) E(C) / \ K(UNC) L(UNC)
рд╕рдВрдкрд░реНрдХ рд╡рд┐рд╡рд░рдг
рдореИрдВ рдЬрд╛рд╡рд╛ рдСрдирд▓рд╛рдЗрди рдкреНрд░рд╢рд┐рдХреНрд╖рдг ( рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд╛рдареНрдпрдХреНрд░рдо ) рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЬрд╛рд╡рд╛ рдХреЛрд░ рдХреЛрд░реНрд╕ рдХреЗ рд░реАрдбрд┐рдЬрд╛рдЗрди рдХреЗ рднрд╛рдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдЖрдк YouTube рдЪреИрдирд▓ рдкрд░ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреА рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╢рд╛рдпрдж рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪреИрдирд▓ рдХрд╛ рд╡реАрдбрд┐рдпреЛ рдмреЗрд╣рддрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИред
рдореЗрд░реА рд╢рд┐рдХреНрд╖рдг рдкрджреНрдзрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ
- рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ
- рдореИрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рддреЗрдЬреА рд╕реЗ рдЬрдЯрд┐рд▓ рдЕрдиреБрдХреНрд░рдо рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ
- рд▓реЗрдЦрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рддрд░реНрдХ (рдЬрд╣рд╛рдБ рддрдХ рд╕рдВрднрд╡ рд╣реЛ) рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ
- рдореИрдВ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг (50-100) рдХреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд╕рдордЭрдиреЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрддрд╛ рд╣реВрдВ
- рдореИрдВ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рджреЗрддрд╛ рд╣реВрдВ
рдпрд╣ рд▓реЗрдЦ рдкреИрд░рд╛рдЧреНрд░рд╛рдл # 1 (рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдк) рдФрд░ # 2 (рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдПрдХ рдХреНрд░рдо) рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред
рд╕реНрдХрд╛рдЗрдк: рдЧреЛрд▓реЛрд╡рдЪрдХреНрд░реНрд╕
рдИрдореЗрд▓: GolovachCourses@gmail.com