code: def test_trainer_on_exception(
      model_and_optimizers: TrainerParameters,
      driver,
      device,
      cur_rank,
      n_epochs=2,
  ):
      from fastNLP.core.callbacks.callback_event import Event
  
      @Trainer.on(Event.on_train_epoch_end())
      def raise_exception(trainer):
          if trainer.driver.get_local_rank() == cur_rank:
              raise NotImplementedError
  
      with pytest.raises(NotImplementedError):
          trainer = Trainer(
              model=model_and_optimizers.model,
              driver=driver,
              device=device,
              optimizers=model_and_optimizers.optimizers,
              train_dataloader=model_and_optimizers.train_dataloader,
              evaluate_dataloaders=model_and_optimizers.evaluate_dataloaders,
              input_mapping=model_and_optimizers.input_mapping,
              output_mapping=model_and_optimizers.output_mapping,
              metrics=model_and_optimizers.metrics,
              n_epochs=n_epochs,
              output_from_new_proc="all",
          )
          trainer.run()
  
      if dist.is_initialized():
          dist.destroy_process_group()
  
imports: import os.path
  import subprocess
  import sys
  import pytest
  from dataclasses import dataclass
  from typing import Any
  from pathlib import Path
  from fastNLP.core.controllers.trainer import Trainer
  from tests.helpers.models.torch_model import TorchNormalModel_Classification_1, TorchNormalModel_Classification_3
  from tests.helpers.datasets.torch_data import TorchNormalDataset_Classification
  from tests.helpers.callbacks.helper_callbacks import RecordLossCallback
  from tests.helpers.callbacks.helper_callbacks_torch import RecordAccumulationStepsCallback_Torch
  from tests.helpers.utils import magic_argv_env_context, Capturing
  from fastNLP.envs.distributed import rank_zero_rm
  from fastNLP.envs.imports import _NEED_IMPORT_TORCH, _TORCH_GREATER_EQUAL_1_12
label_desc: Use image node_id 6 for calling a global function with example usage: test_trainer_on_exception(model_and_optimizers, driver, device, cur_rank, n_epochs) without return types