أخيرًا ، كجزء من معالجة الاستثناءات ، لا يمكن استخدامه إلا في عبارات المحاولة/الصيد ، ويأتي مع كتلة بيان ، مما يشير إلى أنه سيتم تنفيذ هذا البيان في النهاية (بغض النظر عما إذا كان الاستثناء قد تم إلقاؤه أم لا) ، وغالبًا ما يتم استخدامه عند الحاجة إلى إصدار الموارد.
من قبل ، عند كتابة زحف ، كان تردد اتصال قاعدة البيانات مرتفعًا جدًا. في بعض الأحيان لم تتم معالجة البيانات بشكل جيد. بعد الإبلاغ عن خطأ SQL ، تم إلقاء استثناء ولكن لم يتم قطع اتصال قاعدة البيانات اللاحقة. وقد أدى ذلك إلى النهاية إلى أن عدد اتصالات قاعدة البيانات كان كبيرًا جدًا ولم يعد مسموحًا به بالاتصال (لأنها كانت مكتبة شخصية ، أعدت تشغيلها مباشرة). يمكن تنفيذ عملية إطلاق اتصال قاعدة البيانات هذه أخيرًا.
أولاً ، دعنا نلقي نظرة على الكود الذي لم يتم تشغيله أخيرًا (لا يمكن تشغيله مباشرة ، فقط فهم ما يعنيه)
Connection Conn ؛ stats stmt ؛ حاول {conn = drivermanager.getConnection (url ، اسم المستخدم ، كلمة المرور) ؛ stmt = conn.createstatement ؛ String sql = "sql" ؛ // sql stmt.executeupdate (sql) ؛ stmt.close () ؛ conn.close () ؛} catch (استثناء e) {E.PrintStackTrace () ؛}عندما يعمل البرنامج بشكل طبيعي ، لا يتم طرح أي استثناء ، لا مشكلة.
ومع ذلك ، عندما يلقي البرنامج استثناء (حدوث خطأ SQL) ، لا يتم تنفيذ البيان في المحاولة ويتم تنفيذ البيان الموجود في الصيد مباشرة ، مما يؤدي إلى عدم إغلاق اتصال قاعدة البيانات بشكل طبيعي. إذا أصبحت كمية البيانات أكبر ، فإن الحد الأقصى لعدد الاتصالات في قاعدة البيانات يصل إلى الحد الأعلى ، ولم تعد الاتصالات الجديدة مسموحًا بها.
ثم يمكن أن تنعكس فائدة في النهاية الآن
Connection conn = null ؛ state stmt = null ؛ حاول {conn = drivermanager.getConnection (url ، اسم المستخدم ، كلمة المرور) ؛ stmt = conn.createstatement ؛ String sql = "sql" ؛ // sql stmt.executeupdate (sql) ؛ stmt.close () ؛ conn.close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ } أخيرًا {if (stmt! = null) {stmt.close () ؛ } if (conn! = null) {conn.close () ؛ }} وبهذه الطريقة ، حتى إذا قام SQL بتشغيل خطأ ويلقي استثناء ، ثم إصدار حكم آخر على اتصال قاعدة البيانات في الكود النهائي ، فيمكنه التأكد من عدم إهدار موارد اتصال قاعدة البيانات دون سبب.
ما سبق هو استخدام أخيرًا في Java الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!