FAILED_PROCESS = "Process 3"

class ProcessInitError(Exception):
	pass

class Process:
	def __init__(self, name):
		if name == FAILED_PROCESS:
			raise ProcessInitError("Something goes wrong with {name}".format(name=name))
		self.name = name
		print(self.name, "created")
		
	def stop(self):
		print(self.name, "stopped")

class ProcessManager:
	def __init__(self):
		self.processes = []
		
	def init(self, name):
		process = Process(name)
		self.processes.append(process)
		
	def release_all(self):
		for process in reversed(self.processes):
			process.stop()
		

pm = ProcessManager()
try:
	pm.init("Process 1")
	pm.init("Process 2")
	pm.init("Process 3")
except ProcessInitError as err:
	print(err)
	pm.release_all()
	raise
