{"id":35870,"date":"2025-12-04T23:40:40","date_gmt":"2025-12-04T20:40:40","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=35870"},"modified":"2025-12-04T23:40:40","modified_gmt":"2025-12-04T20:40:40","slug":"javada-istisna-exception-yonetimi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/","title":{"rendered":"Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi"},"content":{"rendered":"<p><body><\/p>\n<h2>Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi<\/h2>\n<h2>Giri\u015f<\/h2>\n<p>Yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinde, uygulamalar\u0131n beklenmedik durumlarla kar\u015f\u0131la\u015fmas\u0131 ka\u00e7\u0131n\u0131lmazd\u0131r. Dosya okuma s\u0131ras\u0131nda dosyan\u0131n bulunamamas\u0131, a\u011f ba\u011flant\u0131s\u0131n\u0131n kesilmesi, hatal\u0131 kullan\u0131c\u0131 giri\u015fi veya bir veritaban\u0131 sorgusunun ba\u015far\u0131s\u0131z olmas\u0131 gibi senaryolar, bir uygulaman\u0131n normal ak\u0131\u015f\u0131n\u0131 bozabilir. Bu t\u00fcr beklenmedik durumlar, programlama dillerinde &#8220;istisna&#8221; (exception) olarak adland\u0131r\u0131l\u0131r. Java, bu istisnalar\u0131 ele almak ve uygulamalar\u0131n daha sa\u011flam, g\u00fcvenilir ve kullan\u0131c\u0131 dostu olmas\u0131n\u0131 sa\u011flamak i\u00e7in kapsaml\u0131 bir istisna y\u00f6netimi mekanizmas\u0131 sunar.<\/p>\n<p>\u0130stisna y\u00f6netimi, bir hatan\u0131n meydana geldi\u011fi zaman program\u0131n \u00e7\u00f6kmesini engellemek, hatay\u0131 d\u00fczg\u00fcn bir \u015fekilde ele almak, kullan\u0131c\u0131ya anlaml\u0131 geri bildirim sa\u011flamak ve uygulaman\u0131n \u00e7al\u0131\u015fmaya devam etmesini veya kontroll\u00fc bir \u015fekilde sonlanmas\u0131n\u0131 sa\u011flamak i\u00e7in kritik \u00f6neme sahiptir. Bu makale, Java&#8217;daki istisna y\u00f6netimi kavramlar\u0131n\u0131, mekanizmalar\u0131n\u0131, en iyi uygulamalar\u0131 ve s\u0131k yap\u0131lan hatalar\u0131 detayl\u0131 bir \u015fekilde inceleyecektir.<\/p>\n<h2>Temel Kavramlar<\/h2>\n<p>Java&#8217;da istisna y\u00f6netimi, <code>java.lang.Throwable<\/code> s\u0131n\u0131f\u0131n\u0131n bir par\u00e7as\u0131 olan hiyerar\u015fik bir yap\u0131 \u00fczerine kuruludur. Bu hiyerar\u015fi, istisnalar\u0131n t\u00fcrlerini ve nas\u0131l ele al\u0131nmalar\u0131 gerekti\u011fini belirler.<\/p>\n<h3>Throwable S\u0131n\u0131f Hiyerar\u015fisi<\/h3>\n<p><code>Throwable<\/code> s\u0131n\u0131f\u0131, Java&#8217;da f\u0131rlat\u0131labilen (throwable) t\u00fcm nesnelerin s\u00fcper s\u0131n\u0131f\u0131d\u0131r. Bu s\u0131n\u0131f\u0131n iki ana alt s\u0131n\u0131f\u0131 vard\u0131r: <code>Error<\/code> ve <code>Exception<\/code>.<\/p>\n<p>*   <strong>Error:<\/strong> Ciddi, genellikle kurtar\u0131lamaz ve uygulaman\u0131n kontrol\u00fc d\u0131\u015f\u0131ndaki sorunlar\u0131 temsil eder. \u00d6rne\u011fin, <code>OutOfMemoryError<\/code> (bellek yetersizli\u011fi) veya <code>StackOverflowError<\/code> (y\u0131\u011f\u0131n ta\u015fmas\u0131). Bu t\u00fcr hatalar genellikle JVM (Java Sanal Makinesi) taraf\u0131ndan f\u0131rlat\u0131l\u0131r ve geli\u015ftiricinin do\u011frudan ele almas\u0131 beklenmez, \u00e7\u00fcnk\u00fc \u00e7o\u011fu durumda uygulama bu hatalardan kurtar\u0131lamaz.<br \/>\n*   <strong>Exception:<\/strong> Uygulamalar\u0131n normal \u00e7al\u0131\u015fmas\u0131 s\u0131ras\u0131nda ortaya \u00e7\u0131kabilecek, ancak genellikle kurtar\u0131labilecek veya ele al\u0131nabilecek sorunlar\u0131 temsil eder. <code>Exception<\/code> s\u0131n\u0131f\u0131n\u0131n kendisi de iki ana kategoriye ayr\u0131l\u0131r: &#8220;i\u015faretli (checked)&#8221; ve &#8220;i\u015faretsiz (unchecked)&#8221; istisnalar.<\/p>\n<p>    *   <strong>Checked Exceptions (\u0130\u015faretli \u0130stisnalar):<\/strong> Derleme zaman\u0131nda kontrol edilen istisnalard\u0131r. Bu t\u00fcr istisnalar, bir metotta f\u0131rlat\u0131ld\u0131\u011f\u0131nda veya bu istisnay\u0131 f\u0131rlatabilecek bir metot \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, ya <code>try-catch<\/code> blo\u011fu ile yakalanmal\u0131 ya da metodun imzas\u0131nda <code>throws<\/code> anahtar kelimesi ile belirtilmelidir. Aksi takdirde derleyici hatas\u0131 al\u0131n\u0131r. <code>IOException<\/code>, <code>SQLException<\/code>, <code>ClassNotFoundException<\/code> gibi istisnalar bu kategoriye girer. Genellikle uygulaman\u0131n d\u0131\u015f d\u00fcnyayla etkile\u015fiminden kaynaklanan (dosya i\u015flemleri, a\u011f ileti\u015fimi, veritaban\u0131 eri\u015fimi) ve geli\u015ftiricinin \u00f6nceden bilip ele almas\u0131 gereken durumlar\u0131 temsil ederler.<br \/>\n    *   <strong>Unchecked Exceptions (\u0130\u015faretsiz \u0130stisnalar):<\/strong> \u00c7al\u0131\u015fma zaman\u0131nda (runtime) ortaya \u00e7\u0131kan istisnalard\u0131r ve derleyici taraf\u0131ndan kontrol edilmezler. <code>RuntimeException<\/code> s\u0131n\u0131f\u0131 ve onun alt s\u0131n\u0131flar\u0131 bu kategoriye girer. <code>NullPointerException<\/code>, <code>ArrayIndexOutOfBoundsException<\/code>, <code>ArithmeticException<\/code>, <code>IllegalArgumentException<\/code> gibi istisnalar i\u015faretsiz istisnalard\u0131r. Bu t\u00fcr istisnalar genellikle programlama hatalar\u0131ndan (mant\u0131k hatalar\u0131, ge\u00e7ersiz arg\u00fcmanlar) kaynaklan\u0131r ve genellikle kodda d\u00fczeltme yap\u0131larak \u00f6nlenmelidir. Zorunlu olarak <code>try-catch<\/code> ile yakalanmalar\u0131 veya <code>throws<\/code> ile belirtilmeleri gerekmez, ancak iste\u011fe ba\u011fl\u0131 olarak yakalanabilirler.<\/p>\n<h3>Checked vs. Unchecked Exceptions<\/h3>\n<p>Bu ayr\u0131m, Java&#8217;n\u0131n istisna y\u00f6netim felsefesinin temelini olu\u015fturur:<\/p>\n<p>*   <strong>Checked Exceptions:<\/strong> Geli\u015ftiriciyi, kurtar\u0131labilir hatalar\u0131 proaktif olarak ele almaya zorlar. Bu, uygulaman\u0131n daha sa\u011flam olmas\u0131n\u0131 sa\u011flar \u00e7\u00fcnk\u00fc potansiyel hata durumlar\u0131 g\u00f6z ard\u0131 edilemez.<br \/>\n*   <strong>Unchecked Exceptions:<\/strong> Genellikle programlama hatalar\u0131n\u0131 g\u00f6sterir ve uygulaman\u0131n anormal bir durumda oldu\u011funu belirtir. Bu istisnalar\u0131 yakalamak yerine, genellikle hatan\u0131n temel nedenini (koddaki kusuru) d\u00fczeltmek daha iyi bir yakla\u015f\u0131md\u0131r. Ancak, baz\u0131 durumlarda, \u00f6zellikle uygulaman\u0131n \u00fcst katmanlar\u0131nda, bu t\u00fcr istisnalar\u0131 yakalay\u0131p loglamak veya kullan\u0131c\u0131ya genel bir hata mesaj\u0131 g\u00f6stermek faydal\u0131 olabilir.<\/p>\n<h2>Exception Handling Mekanizmas\u0131<\/h2>\n<p>Java, istisnalar\u0131 y\u00f6netmek i\u00e7in <code>try<\/code>, <code>catch<\/code>, <code>finally<\/code>, <code>throw<\/code> ve <code>throws<\/code> anahtar kelimelerini kullan\u0131r.<\/p>\n<h3>try-catch Blo\u011fu<\/h3>\n<p><code>try-catch<\/code> blo\u011fu, bir istisnan\u0131n olu\u015fabilece\u011fi kodu izlemek ve olu\u015ftu\u011funda bu istisnay\u0131 ele almak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>*   <strong>try:<\/strong> \u0130stisna olu\u015fturma potansiyeli olan kod blo\u011funu i\u00e7erir.<br \/>\n*   <strong>catch:<\/strong> <code>try<\/code> blo\u011funda belirli bir istisna t\u00fcr\u00fc meydana geldi\u011finde \u00e7al\u0131\u015facak kod blo\u011funu i\u00e7erir. Bir <code>try<\/code> blo\u011funu birden fazla <code>catch<\/code> blo\u011fu takip edebilir, bu da farkl\u0131 istisna t\u00fcrlerini farkl\u0131 \u015fekillerde ele alma imkan\u0131 sunar.<\/p>\n<pre><code class=\"language-java\">try {\n    \/\/ \u0130stisna f\u0131rlatabilecek kod\n    int result = 10 \/ 0; \/\/ ArithmeticException f\u0131rlat\u0131r\n} catch (ArithmeticException e) {\n    \/\/ ArithmeticException yakaland\u0131\u011f\u0131nda \u00e7al\u0131\u015facak kod\n    System.err.println(\"S\u0131f\u0131ra b\u00f6lme hatas\u0131: \" + e.getMessage());\n} catch (Exception e) {\n    \/\/ Di\u011fer t\u00fcm istisnalar\u0131 yakalar (daha genel istisnalar sonda olmal\u0131)\n    System.err.println(\"Genel bir hata olu\u015ftu: \" + e.getMessage());\n}<\/code><\/pre>\n<p>Birden fazla <code>catch<\/code> blo\u011fu kullan\u0131ld\u0131\u011f\u0131nda, istisnalar\u0131n daha spesifik olandan daha genel olana do\u011fru s\u0131ralanmas\u0131 \u00f6nemlidir. \u00c7\u00fcnk\u00fc Java, <code>catch<\/code> bloklar\u0131n\u0131 yukar\u0131dan a\u015fa\u011f\u0131ya do\u011fru tarar ve ilk e\u015fle\u015fen blo\u011fu y\u00fcr\u00fct\u00fcr. E\u011fer <code>catch (Exception e)<\/code> blo\u011fu en ba\u015fta olsayd\u0131, t\u00fcm istisnalar\u0131 yakalar ve daha spesifik <code>catch<\/code> bloklar\u0131na asla ula\u015f\u0131lamazd\u0131. Java 7 ile birlikte, ayn\u0131 <code>catch<\/code> blo\u011funda birden fazla istisna t\u00fcr\u00fcn\u00fc dikey \u00e7izgi (<code>|<\/code>) ile ay\u0131rarak yakalamak m\u00fcmk\u00fcn hale gelmi\u015ftir:<\/p>\n<pre><code class=\"language-java\">try {\n    \/\/ Kod\n} catch (IOException | SQLException e) {\n    System.err.println(\"Dosya veya veritaban\u0131 hatas\u0131: \" + e.getMessage());\n}<\/code><\/pre>\n<h3>finally Blo\u011fu<\/h3>\n<p><code>finally<\/code> blo\u011fu, <code>try<\/code> blo\u011fu tamamland\u0131ktan sonra, bir istisna f\u0131rlat\u0131lsa da f\u0131rlat\u0131lmasa da her zaman y\u00fcr\u00fct\u00fclecek kodu i\u00e7erir. Bu blok genellikle kaynaklar\u0131 (dosyalar, a\u011f ba\u011flant\u0131lar\u0131, veritaban\u0131 ba\u011flant\u0131lar\u0131) kapatmak veya temizlemek gibi i\u015flemler i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-java\">try {\n    \/\/ Kaynak kullanan veya istisna f\u0131rlatabilecek kod\n    \/\/ ...\n} catch (Exception e) {\n    \/\/ \u0130stisnay\u0131 ele al\n    \/\/ ...\n} finally {\n    \/\/ Kaynaklar\u0131 serbest b\u0131rakma, temizleme i\u015flemleri\n    System.out.println(\"Finally blo\u011fu her zaman \u00e7al\u0131\u015f\u0131r.\");\n}<\/code><\/pre>\n<p><code>finally<\/code> blo\u011fu, <code>try<\/code> veya <code>catch<\/code> bloklar\u0131nda <code>return<\/code> ifadesi olsa bile \u00e7al\u0131\u015f\u0131r. Ancak, JVM&#8217;nin \u00e7\u00f6kmesi (\u00f6rne\u011fin <code>System.exit(0)<\/code> \u00e7a\u011fr\u0131s\u0131 veya <code>OutOfMemoryError<\/code> gibi ciddi bir <code>Error<\/code> durumunda) gibi istisnai durumlar haricinde <code>finally<\/code> blo\u011fu her zaman \u00e7al\u0131\u015f\u0131r.<\/p>\n<h3>throw Anahtar Kelimesi<\/h3>\n<p><code>throw<\/code> anahtar kelimesi, bir istisna nesnesini manuel olarak f\u0131rlatmak i\u00e7in kullan\u0131l\u0131r. Bu, belirli bir ko\u015fulun bir hata durumu oldu\u011funu belirtmek istedi\u011finizde faydal\u0131d\u0131r. Hem mevcut istisnalar\u0131 hem de \u00f6zel olarak olu\u015fturdu\u011funuz istisnalar\u0131 f\u0131rlatabilirsiniz.<\/p>\n<pre><code class=\"language-java\">public void validateAge(int age) {\n    if (age < 0 || age > 120) {\n        throw new IllegalArgumentException(\"Ya\u015f ge\u00e7erli aral\u0131kta de\u011fil: \" + age);\n    }\n    \/\/ ...\n}<\/code><\/pre>\n<h3>throws Anahtar Kelimesi<\/h3>\n<p><code>throws<\/code> anahtar kelimesi, bir metodun imzas\u0131nda, metodun f\u0131rlatabilece\u011fi i\u015faretli istisnalar\u0131 belirtmek i\u00e7in kullan\u0131l\u0131r. Bu, metodun \u00e7a\u011fr\u0131ld\u0131\u011f\u0131 yere, bu istisnalar\u0131n ele al\u0131nmas\u0131 veya daha ileriye f\u0131rlat\u0131lmas\u0131 gerekti\u011fini bildirir.<\/p>\n<pre><code class=\"language-java\">public void readFile(String filePath) throws IOException {\n    \/\/ Dosya okuma i\u015flemleri\n    \/\/ E\u011fer dosya bulunamazsa veya okuma hatas\u0131 olursa IOException f\u0131rlat\u0131labilir\n    \/\/ ...\n    FileReader fileReader = new FileReader(filePath);\n    \/\/ ...\n    fileReader.close();\n}\n\n\/\/ Bu metodu \u00e7a\u011f\u0131ran kod ya IOException'\u0131 yakalamal\u0131\n\/\/ ya da kendi imzas\u0131nda IOException f\u0131rlataca\u011f\u0131n\u0131 belirtmeli\npublic static void main(String[] args) {\n    MyClass obj = new MyClass();\n    try {\n        obj.readFile(\"nonexistent.txt\");\n    } catch (IOException e) {\n        System.err.println(\"Dosya okuma hatas\u0131: \" + e.getMessage());\n    }\n}<\/code><\/pre>\n<h2>\u00d6zel Durum S\u0131n\u0131flar\u0131 Olu\u015fturma<\/h2>\n<p>Java&#8217;da mevcut istisna s\u0131n\u0131flar\u0131 bir\u00e7ok durumu kapsasa da, bazen uygulaman\u0131z\u0131n i\u015f mant\u0131\u011f\u0131na \u00f6zg\u00fc istisnalar tan\u0131mlamak isteyebilirsiniz. \u00d6zel istisna s\u0131n\u0131flar\u0131 olu\u015fturmak, kodunuzun okunabilirli\u011fini art\u0131r\u0131r, hata mesajlar\u0131n\u0131 daha anlaml\u0131 hale getirir ve istisna y\u00f6netimini daha mod\u00fcler hale getirir.<\/p>\n<p>\u00d6zel bir istisna s\u0131n\u0131f\u0131 olu\u015fturmak i\u00e7in, <code>Exception<\/code> (i\u015faretli istisna i\u00e7in) veya <code>RuntimeException<\/code> (i\u015faretsiz istisna i\u00e7in) s\u0131n\u0131f\u0131ndan t\u00fcretmeniz gerekir. Genellikle, \u00f6zel istisnalar i\u00e7in birka\u00e7 kurucu metot (constructor) tan\u0131mlan\u0131r:<\/p>\n<p>*   Parametresiz kurucu metot.<br \/>\n*   Bir mesaj alan kurucu metot.<br \/>\n*   Bir mesaj ve bir k\u00f6k neden (cause) alan kurucu metot (istisna zincirlemesi i\u00e7in).<br \/>\n*   Bir k\u00f6k neden alan kurucu metot.<\/p>\n<pre><code class=\"language-java\">\/\/ \u0130\u015faretli (checked) \u00f6zel istisna \u00f6rne\u011fi\npublic class InsufficientFundsException extends Exception {\n    public InsufficientFundsException() {\n        super(\"Yetersiz bakiye.\");\n    }\n\n    public InsufficientFundsException(String message) {\n        super(message);\n    }\n\n    public InsufficientFundsException(String message, Throwable cause) {\n        super(message, cause);\n    }\n}\n\n\/\/ \u0130\u015faretsiz (unchecked) \u00f6zel istisna \u00f6rne\u011fi\npublic class InvalidInputException extends RuntimeException {\n    public InvalidInputException() {\n        super(\"Ge\u00e7ersiz giri\u015f.\");\n    }\n\n    public InvalidInputException(String message) {\n        super(message);\n    }\n\n    public InvalidInputException(String message, Throwable cause) {\n        super(message, cause);\n    }\n}\n\n\/\/ Kullan\u0131m \u00f6rne\u011fi\npublic class BankAccount {\n    private double balance;\n\n    public BankAccount(double initialBalance) {\n        if (initialBalance < 0) {\n            throw new InvalidInputException(\"Ba\u015flang\u0131\u00e7 bakiyesi negatif olamaz.\");\n        }\n        this.balance = initialBalance;\n    }\n\n    public void withdraw(double amount) throws InsufficientFundsException {\n        if (amount < 0) {\n            throw new InvalidInputException(\"\u00c7ekilecek miktar negatif olamaz.\");\n        }\n        if (balance < amount) {\n            throw new InsufficientFundsException(\"Hesapta \" + balance + \" TL var, \" + amount + \" TL \u00e7ekilemez.\");\n        }\n        balance -= amount;\n        System.out.println(amount + \" TL \u00e7ekildi. Yeni bakiye: \" + balance + \" TL\");\n    }\n}<\/code><\/pre>\n<p>Ne zaman i\u015faretli, ne zaman i\u015faretsiz \u00f6zel istisna kullan\u0131laca\u011f\u0131, hatan\u0131n do\u011fas\u0131na ba\u011fl\u0131d\u0131r:<br \/>\n*   <strong>\u0130\u015faretli \u00f6zel istisnalar:<\/strong> \u00c7a\u011f\u0131ran\u0131n ele almas\u0131 beklenen, i\u015f mant\u0131\u011f\u0131na \u00f6zg\u00fc ve kurtar\u0131labilir hatalar i\u00e7in.<br \/>\n*   <strong>\u0130\u015faretsiz \u00f6zel istisnalar:<\/strong> Genellikle programlama hatalar\u0131n\u0131 veya uygulama durumunda ciddi bir tutars\u0131zl\u0131\u011f\u0131 g\u00f6steren durumlar i\u00e7in.<\/p>\n<h2>\u0130leri Konular ve En \u0130yi Uygulamalar<\/h2>\n<p>Etkili istisna y\u00f6netimi, sadece temel mekanizmalar\u0131 bilmekle kalmaz, ayn\u0131 zamanda belirli senaryolarda do\u011fru yakla\u015f\u0131mlar\u0131 benimsemeyi de gerektirir.<\/p>\n<h3>Try-with-Resources (Java 7+)<\/h3>\n<p>Java 7 ile tan\u0131t\u0131lan <code>try-with-resources<\/code> ifadesi, <code>AutoCloseable<\/code> aray\u00fcz\u00fcn\u00fc uygulayan kaynaklar\u0131n (dosya ak\u0131\u015flar\u0131, veritaban\u0131 ba\u011flant\u0131lar\u0131 vb.) otomatik olarak kapat\u0131lmas\u0131n\u0131 sa\u011flar. Bu, <code>finally<\/code> blo\u011funda manuel olarak kaynak kapatma ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r ve kaynak s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nler.<\/p>\n<pre><code class=\"language-java\">try (BufferedReader reader = new BufferedReader(new FileReader(\"example.txt\"))) {\n    String line;\n    while ((line = reader.readLine()) != null) {\n        System.out.println(line);\n    }\n} catch (IOException e) {\n    System.err.println(\"Dosya okuma hatas\u0131: \" + e.getMessage());\n}\n\/\/ reader nesnesi try blo\u011fundan \u00e7\u0131k\u0131ld\u0131\u011f\u0131nda otomatik olarak kapat\u0131l\u0131r<\/code><\/pre>\n<p>Bu yap\u0131, hem kodu daha temiz hale getirir hem de kaynak kapatma i\u015fleminin istisnalar f\u0131rlat\u0131lsa bile do\u011fru bir \u015fekilde ger\u00e7ekle\u015fmesini garanti eder.<\/p>\n<h3>Exception Chaining (\u0130stisna Zincirlemesi)<\/h3>\n<p>Bir istisna yakaland\u0131\u011f\u0131nda ve daha y\u00fcksek seviyeli bir istisna olarak yeniden f\u0131rlat\u0131ld\u0131\u011f\u0131nda, orijinal istisnan\u0131n (k\u00f6k nedenin) kaybedilmemesi \u00f6nemlidir. \u0130stisna zincirlemesi, bir istisnan\u0131n k\u00f6k nedenini (cause) koruyarak, hata ay\u0131klama s\u00fcrecini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r. <code>Throwable<\/code> s\u0131n\u0131f\u0131n\u0131n <code>initCause()<\/code> ve <code>getCause()<\/code> metotlar\u0131 bu ama\u00e7la kullan\u0131l\u0131r. Genellikle, istisna s\u0131n\u0131flar\u0131n\u0131n kurucular\u0131, k\u00f6k nedeni parametre olarak alacak \u015fekilde tasarlan\u0131r.<\/p>\n<pre><code class=\"language-java\">try {\n    \/\/ Veritaban\u0131 i\u015flemi\n    \/\/ SQLException f\u0131rlatabilir\n} catch (SQLException e) {\n    \/\/ Orijinal SQLException'\u0131 kaybetmeden, daha y\u00fcksek seviyeli bir istisna f\u0131rlat\n    throw new DataAccessException(\"Veritaban\u0131 i\u015fleminde hata olu\u015ftu.\", e);\n}<\/code><\/pre>\n<p>Burada <code>DataAccessException<\/code>, <code>SQLException<\/code>'i k\u00f6k neden olarak saklar. Bu sayede, uygulaman\u0131n \u00fcst katmanlar\u0131nda <code>DataAccessException<\/code> yakaland\u0131\u011f\u0131nda, orijinal <code>SQLException<\/code>'\u0131n t\u00fcm detaylar\u0131na eri\u015filebilir.<\/p>\n<h3>Logging Exceptions (\u0130stisnalar\u0131 Loglama)<\/h3>\n<p>\u0130stisnalar\u0131 yakalamak kadar, onlar\u0131 d\u00fczg\u00fcn bir \u015fekilde loglamak da \u00f6nemlidir. Loglama, uygulama hatalar\u0131n\u0131 izlemek, analiz etmek ve gidermek i\u00e7in vazge\u00e7ilmezdir. Loglarken, istisnan\u0131n tam y\u0131\u011f\u0131n izini (stack trace) ve hatan\u0131n meydana geldi\u011fi ba\u011flam\u0131 (context) kaydetmek hayati \u00f6neme sahiptir.<\/p>\n<pre><code class=\"language-java\">import org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class MyService {\n    private static final Logger logger = LoggerFactory.getLogger(MyService.class);\n\n    public void processData() {\n        try {\n            \/\/ ... baz\u0131 i\u015flemler ...\n        } catch (IOException e) {\n            logger.error(\"Veri i\u015flenirken dosya hatas\u0131 olu\u015ftu. Kullan\u0131c\u0131 ID: 123\", e);\n            \/\/ \u0130stisnay\u0131 yeniden f\u0131rlat veya ba\u015fka bir \u015fekilde ele al\n            throw new CustomServiceException(\"Veri i\u015fleme ba\u015far\u0131s\u0131z oldu.\", e);\n        }\n    }\n}<\/code><\/pre>\n<p><code>logger.error(\"mesaj\", e)<\/code> kullan\u0131m\u0131, mesajla birlikte istisnan\u0131n y\u0131\u011f\u0131n izini de log sistemine g\u00f6nderir.<\/p>\n<h3>Exception Hiding vs. Exception Wrapping<\/h3>\n<p>*   <strong>Exception Hiding (\u0130stisna Gizleme):<\/strong> Bir istisnay\u0131 yakalay\u0131p, onu tamamen yutmak (hi\u00e7bir \u015fey yapmadan bo\u015f bir <code>catch<\/code> blo\u011fu b\u0131rakmak) veya sadece genel bir mesaj loglay\u0131p orijinal istisna detaylar\u0131n\u0131 kaybetmek, hata ay\u0131klamay\u0131 \u00e7ok zorla\u015ft\u0131r\u0131r. Bu k\u00f6t\u00fc bir pratiktir.<br \/>\n*   <strong>Exception Wrapping (\u0130stisna Sarmalama):<\/strong> Bir alt seviye istisnay\u0131 yakalay\u0131p, onu daha y\u00fcksek seviyeli, daha anlaml\u0131 bir \u00f6zel istisna i\u00e7ine sarmalamakt\u0131r (exception chaining kullanarak). Bu, uygulaman\u0131n katmanlar\u0131 aras\u0131nda uygun bir soyutlama sa\u011flar ve istemcinin sadece ilgili istisna t\u00fcrleriyle ilgilenmesini m\u00fcmk\u00fcn k\u0131lar.<\/p>\n<h3>Don't Catch Throwable or Error<\/h3>\n<p><code>catch (Throwable t)<\/code> veya <code>catch (Error e)<\/code> kullanmaktan ka\u00e7\u0131n\u0131lmal\u0131d\u0131r. <code>Error<\/code>lar genellikle JVM'nin kurtar\u0131lamaz hatalar\u0131n\u0131 temsil eder ve bunlar\u0131 yakalamak, uygulaman\u0131n \u00e7\u00f6kmesini engellemeyebilir, aksine daha ciddi sorunlara yol a\u00e7abilir. <code>Throwable<\/code>'\u0131 yakalamak ise hem <code>Error<\/code>lar\u0131 hem de <code>Exception<\/code>lar\u0131 yakalar ki bu da genellikle istenmeyen bir durumdur. Uygulaman\u0131z\u0131n sadece kurtar\u0131labilir <code>Exception<\/code>'lar\u0131 ele almas\u0131 gerekir.<\/p>\n<h3>Don't Swallow Exceptions (\u0130stisnalar\u0131 Yutmay\u0131n)<\/h3>\n<p>Bo\u015f <code>catch<\/code> bloklar\u0131, istisnalar\u0131n sessizce yok olmas\u0131na neden olur ve bu, hata ay\u0131klama kabusuna yol a\u00e7ar. Bir istisnay\u0131 yakal\u0131yorsan\u0131z, en az\u0131ndan onu loglamal\u0131, kullan\u0131c\u0131ya bir hata mesaj\u0131 g\u00f6stermeli veya daha y\u00fcksek bir seviyeye yeniden f\u0131rlatmal\u0131s\u0131n\u0131z.<\/p>\n<pre><code class=\"language-java\">try {\n    \/\/ ...\n} catch (IOException e) {\n    \/\/ K\u00f6t\u00fc: \u0130stisna yutuluyor, hi\u00e7bir \u015fey yap\u0131lm\u0131yor.\n    \/\/ Bu kod hatay\u0131 g\u00f6rmezden gelir ve uygulaman\u0131n beklenmedik \u015fekilde davranmas\u0131na neden olabilir.\n}<\/code><\/pre>\n<h3>Fail-Fast Prensibi<\/h3>\n<p>\"Fail-fast\" prensibi, bir hata durumunun m\u00fcmk\u00fcn olan en erken a\u015famada tespit edilip bildirilmesini savunur. Bu, hatan\u0131n daha karma\u015f\u0131k bir i\u015fleme zincirinin derinliklerine g\u00f6m\u00fclmesini engeller ve hatan\u0131n k\u00f6k nedenini bulmay\u0131 kolayla\u015ft\u0131r\u0131r. \u00d6rne\u011fin, bir metoda ge\u00e7ersiz arg\u00fcmanlar verildi\u011finde, bu arg\u00fcmanlar\u0131 hemen kontrol edip <code>IllegalArgumentException<\/code> f\u0131rlatmak, ileride ya\u015fanabilecek daha karma\u015f\u0131k hatalar\u0131 \u00f6nler.<\/p>\n<h3>Defensive Programming<\/h3>\n<p>Savunmac\u0131 programlama, bir metodun beklenen girdileri al\u0131p almad\u0131\u011f\u0131n\u0131 veya bir \u00f6nko\u015fulun kar\u015f\u0131lan\u0131p kar\u015f\u0131lanmad\u0131\u011f\u0131n\u0131 kontrol etmeyi i\u00e7erir. \u0130stisnalar, bu kontroller ba\u015far\u0131s\u0131z oldu\u011funda bildirimde bulunman\u0131n ana yoludur. \u00d6rne\u011fin, bir listeye eri\u015fmeden \u00f6nce <code>null<\/code> olup olmad\u0131\u011f\u0131n\u0131 veya indeksin ge\u00e7erli olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek.<\/p>\n<h3>D\u00f6k\u00fcmantasyon (Javadocs)<\/h3>\n<p>Bir metodun f\u0131rlatabilece\u011fi istisnalar\u0131 Javadoc yorumlar\u0131nda <code>@throws<\/code> etiketiyle belirtmek, metodun kullan\u0131c\u0131lar\u0131 i\u00e7in \u00e7ok faydal\u0131d\u0131r. Bu, metodun hangi hata durumlar\u0131nda nas\u0131l davranaca\u011f\u0131n\u0131 a\u00e7\u0131k\u00e7a g\u00f6sterir ve \u00e7a\u011fr\u0131 yapan\u0131n bu istisnalar\u0131 uygun \u015fekilde ele almas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<pre><code class=\"language-java\">\/<em><\/em>\n * Belirtilen dosyay\u0131 okur ve i\u00e7eri\u011fini d\u00f6nd\u00fcr\u00fcr.\n *\n * @param filePath Okunacak dosyan\u0131n yolu.\n * @return Dosyan\u0131n i\u00e7eri\u011fi bir String olarak.\n * @throws IOException Dosya okuma s\u0131ras\u0131nda bir hata olu\u015fursa.\n * @throws IllegalArgumentException filePath null veya bo\u015fsa.\n *\/\npublic String readFileContent(String filePath) throws IOException {\n    if (filePath == null || filePath.trim().isEmpty()) {\n        throw new IllegalArgumentException(\"Dosya yolu bo\u015f olamaz.\");\n    }\n    \/\/ ...\n    return \"\";\n}<\/code><\/pre>\n<h2>S\u0131k Yap\u0131lan Hatalar ve Ka\u00e7\u0131n\u0131lmas\u0131 Gereken Durumlar<\/h2>\n<p>Java'da istisna y\u00f6netimi g\u00fc\u00e7l\u00fc bir ara\u00e7 olsa da, yanl\u0131\u015f kullan\u0131ld\u0131\u011f\u0131nda kodu karma\u015f\u0131kla\u015ft\u0131rabilir ve hatalar\u0131n tespitini zorla\u015ft\u0131rabilir. \u0130\u015fte s\u0131k yap\u0131lan baz\u0131 hatalar:<\/p>\n<p>*   <strong>\u00c7ok Geni\u015f <code>catch (Exception e)<\/code> Kullan\u0131m\u0131:<\/strong> T\u00fcm istisnalar\u0131 tek bir genel <code>catch<\/code> blo\u011fu ile yakalamak, farkl\u0131 istisna t\u00fcrlerini ay\u0131rt etme ve onlara \u00f6zel muamele yapma yetene\u011fini ortadan kald\u0131r\u0131r. Bu, genellikle farkl\u0131 hata durumlar\u0131n\u0131n ayn\u0131 \u015fekilde ele al\u0131nmas\u0131na yol a\u00e7ar ve hata ay\u0131klamay\u0131 zorla\u015ft\u0131r\u0131r. M\u00fcmk\u00fcn oldu\u011funca spesifik istisnalar\u0131 yakalamaya \u00e7al\u0131\u015f\u0131n.<br \/>\n*   <strong>Bo\u015f <code>catch<\/code> Bloklar\u0131:<\/strong> Daha \u00f6nce de belirtildi\u011fi gibi, bir istisnay\u0131 yakalay\u0131p hi\u00e7bir \u015fey yapmamak, hatan\u0131n gizlenmesine ve uygulaman\u0131n \u00f6ng\u00f6r\u00fclemeyen davran\u0131\u015flar sergilemesine neden olur.<br \/>\n*   <strong>Gereksiz Yere <code>RuntimeException<\/code> F\u0131rlatma:<\/strong> \u0130\u015faretli istisnalar yerine her zaman <code>RuntimeException<\/code> f\u0131rlatmak, derleyici kontrol\u00fcn\u00fc atlayarak potansiyel kurtar\u0131labilir hatalar\u0131n g\u00f6zden ka\u00e7\u0131r\u0131lmas\u0131na neden olabilir. \u0130\u015f mant\u0131\u011f\u0131na \u00f6zg\u00fc, kurtar\u0131labilir hatalar i\u00e7in i\u015faretli istisnalar tercih edilmelidir.<br \/>\n*   <strong>Exception'lar\u0131 Loglamak Yerine Yeniden F\u0131rlatma veya Yutma:<\/strong> Bir istisnay\u0131 yakalad\u0131\u011f\u0131n\u0131zda, onu sadece loglay\u0131p sonra hi\u00e7bir \u015fey yapmadan b\u0131rakmak veya sadece yeniden f\u0131rlatmak yerine, hatay\u0131 uygun bir \u015fekilde ele alman\u0131z veya sarmalaman\u0131z (wrap) \u00f6nemlidir. Loglama, hatan\u0131n izlenebilirli\u011fini sa\u011flarken, uygun ele alma veya sarmalama, uygulaman\u0131n do\u011fru \u015fekilde tepki vermesini sa\u011flar.<br \/>\n*   <strong><code>finally<\/code> Blo\u011funda \u0130stisna F\u0131rlatma:<\/strong> <code>finally<\/code> blo\u011funda bir istisna f\u0131rlat\u0131l\u0131rsa, <code>try<\/code> blo\u011fundan f\u0131rlat\u0131lan orijinal istisna gizlenebilir. <code>finally<\/code> blo\u011fu genellikle temizlik i\u015flemleri i\u00e7in kullan\u0131l\u0131r ve bu i\u015flemlerin kendileri istisna f\u0131rlatmamal\u0131 veya f\u0131rlat\u0131rlarsa bunlar\u0131 kendi i\u00e7inde ele almal\u0131d\u0131r.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>Java'da istisna y\u00f6netimi, sa\u011flam, g\u00fcvenilir ve bak\u0131m\u0131 kolay uygulamalar geli\u015ftirmek i\u00e7in temel bir beceridir. <code>try-catch-finally<\/code> bloklar\u0131, <code>throw<\/code> ve <code>throws<\/code> anahtar kelimeleri gibi temel mekanizmalar\u0131n yan\u0131 s\u0131ra, <code>try-with-resources<\/code>, istisna zincirlemesi ve \u00f6zel istisna s\u0131n\u0131flar\u0131 gibi ileri konular da geli\u015ftiricilerin ara\u00e7 kutusunda bulunmal\u0131d\u0131r.<\/p>\n<p>Etkili istisna y\u00f6netimi, sadece hatalar\u0131 yakalamakla kalmaz, ayn\u0131 zamanda:<br \/>\n*   Uygulaman\u0131n beklenmedik durumlar kar\u015f\u0131s\u0131nda \u00e7\u00f6kmesini engeller.<br \/>\n*   Kullan\u0131c\u0131lara anlaml\u0131 geri bildirim sa\u011flar.<br \/>\n*   Hata ay\u0131klama ve sorun giderme s\u00fcre\u00e7lerini kolayla\u015ft\u0131r\u0131r.<br \/>\n*   Kodun okunabilirli\u011fini ve s\u00fcrd\u00fcr\u00fclebilirli\u011fini art\u0131r\u0131r.<\/p>\n<p>Geli\u015ftiricilerin, istisnalar\u0131 ne zaman yakalayacaklar\u0131n\u0131, ne zaman f\u0131rlatacaklar\u0131n\u0131, ne zaman loglayacaklar\u0131n\u0131 ve ne zaman kendi \u00f6zel istisnalar\u0131n\u0131 olu\u015fturacaklar\u0131n\u0131 dikkatlice d\u00fc\u015f\u00fcnmeleri gerekir. En iyi uygulamalar\u0131 takip ederek ve s\u0131k yap\u0131lan hatalardan ka\u00e7\u0131narak, Java uygulamalar\u0131n\u0131n kalitesini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rmak m\u00fcmk\u00fcnd\u00fcr. Do\u011fru istisna y\u00f6netimi stratejileri, uygulaman\u0131z\u0131n sadece \u00e7al\u0131\u015fmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda zorlu ko\u015fullar alt\u0131nda bile zarafetle \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi\nGiri\u015f\nYaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinde, uygulamalar\u0131n beklenmedik durumlarla kar\u015f\u0131la\u015fmas\u0131 ka\u00e7\u0131n\u0131lmazd","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1408],"tags":[],"class_list":{"0":"post-35870","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-java","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Java&#039;da \u0130stisna (Exception) Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Java&#039;da \u0130stisna (Exception) Y\u00f6netimi\" \/>\n<meta property=\"og:description\" content=\"Java&#039;da \u0130stisna (Exception) Y\u00f6netimi Giri\u015f Yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinde, uygulamalar\u0131n beklenmedik durumlarla kar\u015f\u0131la\u015fmas\u0131 ka\u00e7\u0131n\u0131lmazd\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-04T20:40:40+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi\",\"datePublished\":\"2025-12-04T20:40:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\"},\"wordCount\":2349,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Java\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\",\"name\":\"Java'da \u0130stisna (Exception) Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-04T20:40:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Java'da \u0130stisna (Exception) Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/","og_locale":"tr_TR","og_type":"article","og_title":"Java'da \u0130stisna (Exception) Y\u00f6netimi","og_description":"Java'da \u0130stisna (Exception) Y\u00f6netimi Giri\u015f Yaz\u0131l\u0131m geli\u015ftirme s\u00fcrecinde, uygulamalar\u0131n beklenmedik durumlarla kar\u015f\u0131la\u015fmas\u0131 ka\u00e7\u0131n\u0131lmazd","og_url":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-04T20:40:40+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"15 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi","datePublished":"2025-12-04T20:40:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/"},"wordCount":2349,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Java"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/","url":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/","name":"Java'da \u0130stisna (Exception) Y\u00f6netimi - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-04T20:40:40+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/javada-istisna-exception-yonetimi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Java&#8217;da \u0130stisna (Exception) Y\u00f6netimi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35870","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=35870"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35870\/revisions"}],"predecessor-version":[{"id":35871,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35870\/revisions\/35871"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35870"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35870"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35870"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}