Android рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рддреНрд░реБрдЯрд┐ рдкрд┐рдХрд░ рдмрдирд╛рдирд╛

рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреЛрдб рдФрд░ / рдпрд╛ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдмрд╣реБрдд рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдЬрдм рдРрд╕реА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЯреЗрд╕реНрдЯ рдлреЛрди / рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд▓рд╛рдЗрд╡ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рд╣реЛрддреА рд╣реИрдВред рдпрд╣ рдФрд░ рднреА рджреБрдЦрдж рд╣реИ рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЗ рдмреАрдЯрд╛ рдкрд░реАрдХреНрд╖рдХ рдорд┐рддреНрд░ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдБ рдЧрд┐рд░ рдЧрдпрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЕрдЪрд╛рдирдХ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдХ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрд╢рд╛ "рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬреЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдбрд┐рдмрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╛рдЬрд╛рд░ рд╕реЗ рдирд╣реАрдВ, рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред

рдХреНрдпрд╛ рдХрд░реЗрдВ? рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХреА рдХреНрд╖рдорддрд╛ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖ рдЬрд╛рдПрдЧреА, рдЬрд┐рд╕рдореЗрдВ рдЕрдирд╣реЗрд▓реНрджреА рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред



рдереНрд░реЗрдб рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХ рд╕реНрдереИрддрд┐рдХ рд╕реЗрдЯрдбрд┐рдлреЙрд▓реНрдЯ рдпреВрдиреЗрдХреНрд╕реНрдЯ рдПрдХреНрд╕рд╕реЗрдкреНрд╢рдирд╣реИрдВрдбрд▓рд░ рд╡рд┐рдзрд┐ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рд╡рд░реНрдЧ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рд╣реИрдВрдбрд▓рд░ рд╡рд░реНрдЧ рдХреЛ Thread.UncaughtExceptionHandler рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реИрдВрдбрд▓рд░ рд░реВрдкрд░реЗрдЦрд╛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
public class TryMe implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread thread, Throwable throwable) { Log.d("TryMe", "Something wrong happened!"); } } 

рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдзрд┐ рдереНрд░реЗрдб рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреА рд╣реИ - рд╡рд╣ рдзрд╛рдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ, рдФрд░ рдереНрд░реЛрдмреЗрдмрд▓ - рдЕрдкрд╡рд╛рдж рд╣реАред рдЙрдкрд░реЛрдХреНрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд╡рд░рдг рдХреЗ рдХреЗрд╡рд▓ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ ... рдЖрдЗрдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ ...
 public class MainActivity extends MapActivity { @Override public void onCreate(Bundle savedInstanceState) { Thread.setDefaultUncaughtExceptionHandler(new TryMe()); Integer a=1; if(true) a=null; int x = 6; x=x/a; // Exception here! } } 

рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо (рдЪреАрдпрд░реНрд╕!) рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ ... рдФрд░ рдПрдХ рдХрд╛рд▓реА рд╕реНрдХреНрд░реАрдиред рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ, рд╣рдордиреЗ рдирд┐рдпрдорд┐рдд Android OS рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдФрд░ рдЕрдм рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░реЗрдВ
 public class TryMe implements Thread.UncaughtExceptionHandler { Thread.UncaughtExceptionHandler oldHandler; public TryMe() { oldHandler = Thread.getDefaultUncaughtExceptionHandler(); //     } @Override public void uncaughtException(Thread thread, Throwable throwable) { Log.d("TryMe", "Something wrong happened!"); if(oldHandler != null) //    ... oldHandler.uncaughtException(thread, throwable); // ...  } } 

рдЕрдм рд╣рдо рд▓реЙрдЧ рдореЗрдВ рд╕рдВрджреЗрд╢ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рд╕рдВрджреЗрд╢ рджреЛрдиреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рднреА рдереНрд░реЗрдбреНрд╕, рд▓реЗрдХрд┐рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрдИ рдФрд░ рдХрдИ рд╕рдорд╛рди рд╢реБрд░реБрдЖрдд рд╣реЛ рд╕рдХрддреА рд╣реИред рдФрд░ рд╕реЗрд╡рд╛рдПрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВ ... рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрд╡реЗрджрди рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рджреМрд░рд╛рди рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 public class MyApplication extends Application { @Override public void onCreate() { Thread.setDefaultUncaughtExceptionHandler(new TryMe()); super.onCreate(); } } 

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░рдХрдЯ рдореЗрдВ рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреБрдЫ рдЗрд╕ рддрд░рд╣:
 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.package"> <application android:name="MyApplication" ... 

рдЕрдм, рдЬрдм рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреМрди рд╕рд╛ рдШрдЯрдХ), рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдмреЗрд╢рдХ, рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЧрдВрднреАрд░ рдирд╣реАрдВ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрдк рдХрд╛ рдХреМрди рд╕рд╛ рд╕рдВрд╕реНрдХрд░рдг? рдХреМрди рд╕рд╛ рдЕрдкрд╡рд╛рдж рд╕рдВрднрд╛рд▓рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ? рдХрд┐рд╕ рдЕрдиреНрдп рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рдШрд╛рддрдХ рд░рд┐рд╣рд╛рдИ рд╣реБрдИ? рдХрд┐рд╕ рдзрд╛рдЧреЗ рдореЗрдВ? рд╕реНрдЯреИрдХ рдХреНрдпрд╛ рдерд╛? рдпрд╣ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рд░рд▓ рдЬрд╛рдирдХрд╛рд░реА рдПрд╕рдбреА рдХрд╛рд░реНрдб рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдкрд╡рд╛рдж рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

рджрд┐рдП рдЧрдП рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдПрд╕рдбреА рдХрд╛рд░реНрдб рдкрд░ /Android/data/your.app.package.name/files/ рдлрд╝реЛрд▓реНрдбрд░ ( рдЬреИрд╕реЗ рджреЗрд╡ рдЧрд╛рдЗрдб рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ ) рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕- dd-MM-yy.txt рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдкрд╡рд╛рдж рдХреЗ рдЬрд╛рдирдХрд╛рд░реА рд╕рд╣реЗрдЬрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдирд┐рдлреЗрд╕реНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП WRITE_EXTERNAL_STORAGE рдХреА рдЕрдиреБрдорддрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдРрд╕рд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред

рд╣рдбрд╝рдмрдбрд╝рд╛рд╣рдЯ - рдореЛрдмрд╛рдЗрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рддреНрд░реБрдЯрд┐ рд╣реИрдВрдбрд▓рд░ рд╣реЛрддреЗ рд╣реИрдВред ACRA рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИ рдЬреЛ рддреНрд░реБрдЯрд┐ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ GoogleDocs рдкрд░ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИред рдПрдВрдбреНрд░реЙрдЗрдб-рд░рд┐рдореЛрдЯ-рд╕реНрдЯреИрдХреНрдЯреНрд░реЗрд╕ - рдПрдХ рд╕рдорд╛рди рд▓рд╛рдЗрдмреНрд░реЗрд░реА, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд░рд┐рд╕реАрд╡рд░ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕ StackOverflow рдкреНрд░рд╢реНрди рдкрд░ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧреА рд╕рд╛рдорд╛рди рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ ред

Source: https://habr.com/ru/post/In129582/


All Articles